次のようなコードを使用して、コンパニオン アプリから Today Extensions のデータを読み取ることができました。
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.cdm.TodayExtensionSharingDefaults"];
NSData *encodedObject = [defaults objectForKey:@"DataContactList"];
CV_DataContactList *object = [NSKeyedUnarchiver unarchiveObjectWithData:encodedObject];
コンパニオン アプリの対応する書き込みコード
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.cdm.TodayExtensionSharingDefaults"];
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:self];
[defaults setObject:encodedObject forKey:@"DataContactList"];
[defaults synchronize];
アプリ グループを作成し、両方のターゲット (拡張アプリとコンパニオン アプリ) の機能に追加しました。すべてがシミュレーターで正常に機能しており、コンパニオン アプリがデータを変更するとすぐにデータが渡されます。
しかし、デバイスで拡張機能を実行すると、データを読み取ることができません。<Warning>: *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
コンソールログで取得し
ました。適切なappidとアプリグループを使用して、プロビジョニングプロファイルも最初から生成しようとしましたが、解決しませんでした.
助けていただければ幸いです。ありがとう!