2013-12-12 16 views
12

これはMagicalRecordの置き換え方法(廃止予定)を見つけるにはどうすればよいですか?私はGoogle、SO、そしてドキュメントを見てきました。何も置き換えられるとは思われません。もちろん、ドキュメントの中には廃止予定のメソッドを置き換えたものは何もありません。 : - {このMagicalRecord廃止予定コールの代替方法は何ですか?

[[NSManagedObjectContext MR_contextForCurrentThread] MR_saveErrorHandler:^(NSError *error) 

答えて

23

問題の非推奨メソッドは次のとおりです。

[NSManagedObjectContext MR_contextForCurrentThread] 

私はそれが私の個人的なブログではなく、いずれかである認めるものの、私は、しばらく前にこのことについて少しblog postを書きました公式ドキュメントしかし、TL; DRは、GCDとキューの世界では、GCDがスレッド上で実行されているにもかかわらず、スレッドに対するキューの1-1マッピングを保証できません。これは単にあなたが異なる中ですべての作業を行う必要があり、ルールを施行することによりcontextForCurrentThreadの微妙なクロススレッドの問題その作物アップを解決し

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) { 
    //make your changes in the localContext 
}]; 

:必ず物事があなたのために今後動作させるための方法は、次のパターンを使用していますスレッド固有のコンテキスト内のスレッド。コンテキストを保存し、コンテキストを再利用しないたびに新しいコンテキストを作成することで、スレッドを交差させず、アプリをクラッシュさせないことが保証されます。

+1

のように動作します** MR_saveErrorHandler:**を置き換えるものは何ですか? – SpokaneDude

+0

以下のうちのどれか:MR_saveOnlySelfAndWait、MR_saveOnlySelfCompletion :, MR_saveToPersistentStoreAndWait、MR_saveToPersistentStoreCompletion: – casademora

+0

ありがとうございました...別の主題で、私はPDFでドキュメントを読むのが好きです...現在のPDFを作成することに興味がありますか? Docsフォルダ内のファイル?私は話をするために "それを前払いしたい"と思います。:D – SpokaneDude

1

casademoraは正しいですが、私はいくつかの問題が発生したので、私の

[[NSManagedObjectContext MR_contextForCurrentThread] MR_saveToPersistentStoreWithCompletion:nil]; 

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) 

に変換するとき、私はあなたが変更したり、エンティティを作成するために注意する必要があり、より正確にしようとするでしょうブロックの内側にあるが、十分ではない。

エンティティを取得するには、コンテキストでも選択要求を使用する必要があります。

MR_findFirstByAttribute:withValue 

であり、更新は保存されません。代わりに

MR_findFirstByAttribute:withValue:InContext:localContext 

を使用する必要がエンティティを作成するときに、それだと同じ

MR_createEntity 

MR_createEntityInContext:localContext 

に変更しなければなりませんそして、それはとても魅力:)

関連する問題