6

MagicalRecordフレームワークを使用してユーザー設定を保存しています。さて、初めて、バックグラウンドスレッドに保存したいと思います。Magical Recordのgithubページには、私が完全には理解していないスニペットの例があります。

Person *person = ...;
[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){

    Person *localPerson = [person MR_inContext:localContext];

    localPerson.firstName = @"John";
    localPerson.lastName = @"Appleseed";

}];

なぜ最初の行が必要なのですか?ブロック内にPersonを完全に作成することはできませんか?ありがとうございました!

4

3 に答える 3

12

もちろんできます。この例ではperson、外部コンテキスト(デフォルトのオブジェクトなど)からオブジェクトを取得し、そのオブジェクトへのポインターを提供してlocalContext、バックグラウンドでオブジェクトを更新できるようにします。ゼロから作成する場合は、次のpersonようにすることができます。

[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){

    Person *localPerson = [Person MR_createInContext:localContext];

    localPerson.firstName = @"John";
    localPerson.lastName = @"Appleseed";

}];

これで完了です。

PS。これは、(インスタンスで呼び出されるインスタンスメソッドの代わりに)クラスMR_createInContext:で呼び出されるクラスメソッドであることに注意してください。 PersonMR_inContext:person

于 2013-01-22T13:17:21.303 に答える
1

はい、ブロック内にも人物を作成できます。inContext:メソッドは、たとえば別のコンテキストからPersonをフェッチする場合にのみ必要です。ブロック内にPersonを作成する場合は、createInContext:メソッドを使用する必要があることに注意してください。

于 2013-01-22T13:17:16.180 に答える
0

マギアレコードの保存とフェッチはコンテキストベースです。したがって、デフォルトのコンテキストでレコードを作成するか、MR_createInContextメソッドを使用して新しいコンテキストでレコードを作成することができます。ただし、レコードをフェッチしている間、コンテキストは作成したものと同じである必要があります。

http://pthiaga.blogspot.in/2014/11/running-database-fetch-core-data-in.html

于 2014-11-19T05:49:13.953 に答える