2017-02-13 104 views
0

我想詢問如何在watchOS應用程序上使用NSUserDefaults。 它的數據與iOS應用程序NSUserDefaults的數據不同嗎?Apple已將iOS應用程序的NSUserDefaults共享更改爲watchOS應用程序

Therearealotof計算器關於這個話題,所有這些問題都有相同的答案。這就是說,例如

,使用一個共享組 容器必須重新設計,以不同的方式處理數據的共享數據與他們的iOS應用觀看應用程序。在watchOS 2中,每個進程必須管理其本地 容器目錄中任何共享數據的副本。對於實際由 這兩個應用共享和更新的數據,這需要使用Watch Connectivity框架 在它們之間移動數據。

但是,所有引用的文字從the web page referred消失,請參閱this accepted answer

而是在當前Apple Docs。有

此外,iOS會自動將您的iOS 應用程序首選項的只讀副本轉發給Apple Watch。您的WatchKit擴展程序可以使用NSUserDefaults對象讀取 這些首選項,但不能將 直接更改爲默認數據庫。

我有2個問題:

  • 哪一個是正確的:所有的計算器問題的答案我上面提到的,或者,蘋果文檔

  • 哪種機制的iOS使用轉發NSUserDefaults的反對watchOS應用程序?依靠未來發展是否可靠以及最新數據是多麼新穎。這個功能可以在不久的將來被棄用嗎?

非常感謝

回答

-1

要回答你的問題,關於哪個答案是正確的NSUserDefaults行爲,就是他們都是正確的。

Apple將iOS應用程序NSUserDefaults作爲只讀值轉發,但手錶也具有自己的NSUserDefaults以及其偏好。文檔的主要內容是讓手錶應用程序從NSUserDefaults的共享容器組中移開,因爲第一個watchKit應用程序是以這種方式實現的。現在蘋果已經增加了WatchConnectivity這也是它們之間共享數據的標準。

要回答第二個問題,請依照NSUserDefaults的方式,像通常那樣分別存儲每個應用的相關偏好設置,並使用WatchConnectivity在應用之間共享數據。

+0

這將是不同的問題。從Watch Kit應用程序更改/更新iOS的NSUserDefaults。我將使用'sendMessage:replyHandler:errorHandler:',等待'replyHandler:'響應'iOS'更新了自己的'NSUserDefaults',然後使用手錶上最新的'NSUserDefaults'數據。'sendMessage:replyHandler:errorHandler:'在這種情況下是合適的。非常感謝 – transang

+0

@tranvansang是的,這是一種方法。如果iOS端的更新可能發生在後臺,您也可以使用'transferUserInfo(_ :)'https://developer.apple.com/reference/watchconnectivity/wcsession/1615671-transferuserinfo。此外,就你的流程而言,如果手錶正在更新iOS應用的某些內容,則不要等待再次讀取「NSUserDefaults」。只需將您的更新發送到iOS應用程序,並適當更新手錶,而無需再次讀取默認值。手錶應該作爲自己的應用程序。發送消息並根據更新進行操作。希望有所幫助。 – lostAtSeaJoshua

+0

感謝您的回覆。 'transferUserInfo'不能確保數據在手機上更新。隨後的'NSUserDefaults'讀取可能會返回意外的不是最新的數據。順便說一句,我認爲有一個選擇轉移方法的權衡 – transang

相關問題