最近スウィフトを始めたばかりで、アプリ グループを使用して iOS デバイス間でデータを共有することで問題が発生しました。
基本的に、以下の手順に従ってプロジェクトをセットアップしました。
【iPhone】
- iPhone ターゲットの有効なアプリ グループ
以下の初期化データ (groupID は、プロジェクトで設定したものと一致します):
sharedDefaults = NSUserDefaults.init(suiteName: groupID) sharedDefaults?.setObject("User Default Shared String", forKey: "test") sharedDefaults?.synchronize()
ログに表示できるユーザーデフォルトをローカルにロードして、テスト文字列を再確認しました。
let t_sharedDefaults = NSUserDefaults.init(suiteName: groupID); t_sharedDefaults?.synchronize(); let str = t_sharedDefaults?.valueForKey("test") as! String; print(str);
【ウォッチ延長】
- 新しいウォッチ拡張ターゲットを作成します。
- アプリ グループを有効にします。
以下のコードを使用して、コンテキストを使用して起動中のユーザーの既定のデータを読み込みます。
sharedDefaults = NSUserDefaults.init(suiteName: groupID); sharedDefaults?.synchronize(); let str = sharedDefaults?.valueForKey("test") print(str);
最初に iPhone ターゲットを実行し、次に watch アプリを実行しました。ただし、watch アプリは、ユーザーの既定値から予期されるデータを読み取ることができません。
テスト プロジェクトも Github にアップロードしました。この問題について何か考えがあれば教えてください。
[ギットハブ]
https://github.com/mattcn/WatchOS_DataSharing
事前にご協力いただきありがとうございます。