0

ヘルパークラスを使用して、NSManagedObjectContextを含むブロックを取得します。

+ (void)openTheDocumentAndPerformBlock:(completion_handle_t)completionBlock;

そして今、私はNSManagedObjectの1つをブロックの外に置きたいと思っています。なぜなら、それを絶えず操作したいからです。また、ViewControllerに保存できない場合は、必要なときに毎回クエリを実行する必要があり、非常に面倒です。

1、NSManagedObjectをsegueから別のVCに渡すことはできますか?
2、UIManagedDocumentは、それらが追加されたときに常に開いている必要がありますか?
3、ブロックの外側でNSManagedObjectを編集して、ブロックに保存できますか?

4

1 に答える 1

1

私があなたの質問を正しく理解している場合はNSManagedObject、クラス(ビューコントローラクラス)にタイプのインスタンス変数が必要です。これにより、ブロックでクエリした管理対象オブジェクトをこの変数に割り当てることができます。これはどこでも使用できます。
その他の質問については、次のようにします
。1.次のコードスニペットが機能することを期待します。宛先ビューコントローラークラスで、渡されたオブジェクトを格納するインスタンス変数を宣言します。

@property (strong) NSManagedObject *container;

ソースビューコントローラのメソッド内でprepareForSegue:、宛先vcを取得し、管理対象オブジェクトを渡します。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    UIViewController *destVC = [segue destinationViewController];
    [destVC setValue:<managed object from block> forKey:@"container"]
}

はい、使用しているのと同じ管理対象オブジェクトコンテキストである限り、ブロックの内外でNSManagedObjectを使用できます。

そして、私はあなたの2番目の質問に対する答えを知りません。

于 2012-09-18T10:12:10.580 に答える