3

iPhone アプリケーション用の WatchKit 拡張機能を作成しています。アプリ グループを使用して Core Data を共有しています。これは機能しており、データは共有されています。watch を使用して新しいNSManagedObjectオブジェクトが作成されると、新しいオブジェクトが作成されたという通知を iPhone アプリに送信します。それを行うには、 を使用しますMMWormhole。iPhone アプリがMMWormhole通知を受け取り、最後のステップである更新を行う必要がありNSManagedObjectContextます。どうすればいいですか?

NSManagedObjectContextDidSaveNotification内部通知の転送とiPhoneアプリでのMMWormhole利用を試みていたのですが、通知のシリアル化がうまくいかず、対応していません。mergeChangesFromContextDidSaveNotificationMMWormholeNSManagedObject

4

1 に答える 1

3

簡単な方法は、アプリにデータをリロードさせることです。フェッチをやり直して、永続ストアから最新のデータを取得します。

より洗練されたものにしたい場合は、次のようにします。

ウォッチ拡張機能では、すべての新規/変更/削除されたオブジェクトに対して、

  • 電話objectIDして入手NSManagedObjectID
  • オブジェクト ID を文字列に変換するURIRepresentation
  • MMWormholeメッセージでこれらの文字列を渡します

アプリでは、メッセージを受信すると、

  • [NSPersistentStoreCoordinator managedObjectIDForURIRepresentation:]文字列を元の形式に変換するために使用します。NSManagedObjectID
  • [NSManagedObjectContext existingObjectWithID:]オブジェクト ID に対応する管理対象オブジェクトを取得するために使用します。

これで、更新が必要なオブジェクトがわかりました。

于 2015-04-10T16:24:57.713 に答える