简体   繁体   中英

Did Apple change NSUserDefaults sharing from iOS app to watchOS app

I want to ask about how to use NSUserDefaults on the watchOS app. Is its data different from the iOS app's NSUserDefaults 's data?

There are a lot of stackoverflow questions about this topic and all of them have same answers. That said, for example

Watch apps that shared data with their iOS apps using a shared group container must be redesigned to handle data differently. In watchOS 2, each process must manage its own copy of any shared data in the local container directory. For data that is actually shared and updated by both apps, this requires using the Watch Connectivity framework to move that data between them.

However, all the quoted text disappeared from the web page referred , see this accepted answer .

Instead, in current Apple Docs . There is

Additionally, iOS automatically forwards a read-only copy of your iOS app's preferences to Apple Watch. Your WatchKit extension can read those preferences using an NSUserDefaults object, but it cannot make changes directly to the defaults database.

I have 2 questions:

  • Which one is correct: all of StackOverflow questions' answers I mentioned above, or, the Apple Docs

  • Which mechanism iOS use to forward NSUserDefaults object to watchOS app? Is it reliable to be relied on for future development and how recent the data is up to date? Can this feature be deprecated in the near future?

Many thanks

To answer your first question, both answers you quoted from StackOverflow and Apple are correct. Apple forwards the iOS app's NSUserDefaults as read-only values, but the watch has it's own NSUserDefaults for its preferences. The main takeaway from the documentation is for watch apps to move away from shared container groups that use NSUserDefaults , (as this was how WatchKit apps were implemented). In watchOS , Apple has added WatchConnectivity which is the standard for sharing data between the iOS and watch apps.

To answer your second question, rely on NSUserDefaults as you would normally to store preferences related to each app separately and use WatchConnectivity for sharing data between apps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM