0

私はiOS5の同時実行オプションに少し混乱しています。通常、古い方法では、mergeChangesと通知を使用して、あるコンテキストから別のコンテキストへの変更を手動で追跡する必要がありました。しかし、私の理解が正しければ、新しいオプションを使用して、子コンテキストを持つNSMainQueueConcurrencyTypeを持つことができます。したがって、子コンテキストを保存するたびに、変更は自動的にプッシュアップされ、他の手動作業なしで親とマージされます。

もしそうなら、私は問題を抱えています。メインコンテキストによってフェッチされたオブジェクトがあるとしましょう。次に、これらのオブジェクトのいくつかのプロパティを変更しますが、まだ保存していません。次に、親がmainContextとして設定されているNSPrivateQueueConcurrencyTypeで、フェッチを実行して、メインコンテキストで変更したばかりのオブジェクトを取得します。フェッチされたオブジェクトは、メインスレッドのプロパティに加えた変更を反映しますか?

4

1 に答える 1

2

フェッチされたオブジェクトは、メインスレッドのプロパティに加えた変更を反映しますか?

いいえ。-refreshObject:mergeChanges:YESを実行するまで、変更は子コンテキストに反映されません。

思考の糧と同じように、UIManagedDocumentはこれを逆に行います。メインスレッドの子コンテキストを作成し、NSPrivateQueueConcurrencyTypeを親として持つコンテキストを使用します。これで、メインスレッドで行われたすべての更新が自動的に親コンテキストに伝播されます。したがって、ドキュメントをバックグラウンドで保存すると、すべての変更がそこに反映されます。

于 2012-06-29T07:51:00.873 に答える