Post

Replies

Boosts

Views

Activity

Reply to Bug in iOS 18 with NSTimeZone and DatePicker
I’m wondering about the purpose of those weird offset values, since they represent the offset in mean solar time at the longitude of those cities rather than official time zones. It’s not inconceivable that some bug exists somewhere in handling nonstandard time zone offsets like that.
Topic: UI Frameworks SubTopic: UIKit Tags:
Dec ’24
Reply to Causes of disordered dictionary in Swift
on my colleague's computer [...] within the same session, we get the same order in print(i) Are these different computers running different versions of macOS (if testing a Mac app) or iOS device / simulator (if testing a target device)? There was a cutover point in the OS where this behavior changed. Before they rewrote Dictionary in Swift, the old Objective-C implementation produced stable orderings for the same set of keys across all dictionaries in a given process. But after, the orderings are unstable between individual dictionary instances. See this thread for some more discussion of this effect.
Topic: Programming Languages SubTopic: Swift Tags:
Dec ’24
Reply to Causes of disordered dictionary in Swift
That’s correct, for the same object. The original description didn’t clarify if you were doing this, with a single dictionary: let object = Test() object.test() object.test() ...or doing this, with a new dictionary each time: Test().test() Test().test() If would be unexpected to get the varying results if doing the first case.
Topic: Programming Languages SubTopic: Swift Tags:
Dec ’24
Reply to Scanning nearby Wi-Fi AP with IoT device
While preparing for your one-on-one App Review consultation, just note that lots of IoT companion apps do exactly what you describe, ranging from (just looking around my own house) security cameras to dog trackers. Also note that Wi-Fi scanning directly within apps is “limited or restricted” by simply having no supported API for doing so. There is no such restriction on receiving blobs of data from a connected device and displaying them to the user.
Dec ’24
Reply to is forKey:fileSize considered accessing non-public API?
is forKey:fileSize considered accessing non-public API? value(forKey:) itself is public API of course, so you likely wouldn’t get rejected by whatever means App Review uses to try to flag more obvious non-public API usage. However, you are relying on undefined behavior, which is still a bad idea for compatibility. The documentation of that class doesn’t mention a property by that name being supported via KVC. In fact, at this very moment, an engineer at Apple may be busy rewriting PHAssetResource in a way that still conforms to the documented API but no longer responds to fetching that particular property via KVC, and your code would stop working in the next OS release. Make sure your app can handle that.
Jan ’25
Reply to Tracking eSIM data usage
Even worse, interface names such as pdp_ip0 and en0 are not considered API, so you really shouldn’t rely on them at all. (Search the forum for those names for more about this.) And even if each SIM got its own documented BSD interface, the deprecation of CTCarrier means it would be hard to even figure out a name for the SIM currently being used. #include <ususl_caveat_about_specially_entitled_carrier_apps>
Jan ’25
Reply to Is there a way of specifying unicode characters for the BUNDLE_DISPLAY_NAME in an .xcconfig?
Just enter the desired character directly in the xcconfig file. The XML character reference &#2002; isn’t needed since an xcconfig file isn’t XML. It’s just a text file encoded in UTF-8 so just about any character should work. Also note that you can enter this directly in the Info.plist file too. The XML character reference syntax is fine of course (and improves readability in this case) but isn’t needed in most cases.
Jan ’25
Reply to Returning One Component of Struct as Encoded Value in JSON
You are close. The custom encode(to:) just needs to be the inverse operation of init(from:) (using a single value container) like this: func encode(to encoder: Encoder) throws { var c = encoder.singleValueContainer() try c.encode(asString) } Should I do JSONSerialization instead? Nope! That’s a huge step backwards from the nice Swift Codable API. BTW, would it be feasible to make asDouble be a computed property, derived from asString as needed? Or the other way around? Ideally only one of them would be a stored property to serve as the single source of truth.
Jan ’25