2016-09-01 3 views
0

私はこの問題で本当に苦労しています:コアデータが非公開でオブジェクトを更新しない

オブジェクトがコアデータに保存されています。私はそのオブジェクトのいくつかのプロパティを更新するメソッドを持っています。私はそのオブジェクトのマネージオブジェクトコンテキストをobj.managedObjectContextから使用しています。

2つのプロパティが変更されました:obj.pending = YESおよびobj.body = 'text'です。 次のように私は当時コアデータにオブジェクトを保存します。

if ([managedObjectContext save:&saveError]) { 

      [persistenceController saveContextAndWait:YES completion:^(NSError *error) { 
       [OfflineManager postData]; 
      }]; 

     } 

postData方法はobj.pending == YESコアデータからすべてのオブジェクトを取得し、データをポストします。 managedObjectContextの型はNSPrivateQueueConcurrencyTypeです。

私の問題は次のとおりです。obj.pendingは更新されているようですが、obj.bodyはそうではありません。私がアプリケーションをポストして再起動する前に、アプリケーションにブレークポイントを追加すると、obj.bodyが正しく更新されます。

これがコンテキストの問題である場合、オブジェクトプロパティの変更の一部が表示されるのはなぜですか?

私はこれを何時間もハッキングしてきましたが、どんな助力も最も感謝しています。

ありがとう

+0

なぜ店舗を明示的に保存しますか?ストアに接続されている(他のコンテキストの子ではない)マネージオブジェクトコンテキストは、あなたのためにそれを行います。 – Avi

+0

私はMDMCoreDataを使用しています - 私のアプリケーションで私のCDを管理する軽量コアデータクラスのコレクション。 – mrcurious

+0

@Aviこれが問題になると思いますか? – mrcurious

答えて

0

ありがとうございます。問題は永続コンテキストであり、バックグラウンドコンテキストを処理するマージハンドラを持たないことでした。私の解決策は、postDataメソッドのたびに新しいコンテキストを作成することでした。

関連する問題