0

次のデータモデルがあります。

entityA<-->>entityB<<-->>entityC
entityD<-->>entityE

entityD と entityE は AC と関係がないことに注意してください。

私の DetailViewController は、管理対象オブジェクトからプロパティを取得し、新しい管理対象オブジェクトとして managedObjectContext に保存します。

現在、UILabels に既存のマネージド オブジェクトを次のように表示しています。

UILabel1.text = [self.selectedEntityB nameB];
UILabel2.text = [self.selectedEntityA nameA];

次に、保存アクションでコンテキストに保存します。

- (IBAction)save:(id)sender {
    EntityD *newEntityD = [NSEntityDescription insertNewObjectForEntityForName:@"EntityD"
                                                      inManagedObjectContext:self.managedObjectContext];

    [newEntityD setValue:self.UILabel2.text forKey:@"nameD"];    

    EntityE *newEntityE = [NSEntityDescription insertNewObjectForEntityForName:@"EntityE"
                                                      inManagedObjectContext:self.managedObjectContext];

    [newEntityE setValue:self.UILabel1.text forKey:@"nameE"];

    NSError *anyError = nil;
    BOOL savedSuccessfully = [self.managedObjectContext save:&anyError];
    if (!savedSuccessfully) {

    }
}

これは、nameD と nameE を設定する場合に機能します。EntityD と EntityE の新しく作成されたオブジェクト間の関係を作成しようとしています。entityE から entityD への関係が toD であるとしましょう。保存アクションで試しました:

  [newEntityE setValue:self.UILabel2.text forKey:@"toD"];

しかし、次のエラーが発生します:「NSInvalidArgumentException」、理由:「-[__NSCFString managedObjectContext]: 認識されないセレクターがインスタンス 0x10939fd00 に送信されました」

新しく作成されたオブジェクト間の関係を確立するにはどうすればよいですか?

4

2 に答える 2

0

NSManagedObjectサブクラスを使用していると仮定しています。この場合、面倒な呼び出しから離れて、setValue代わりに便利なドット表記を使用することをお勧めします。

との関係はオブジェクトをtoD指すためEntityD、テキスト フィールドの文字列にすることはできません。代わりに entityD を設定します。

newEntityE.toD = newEntityD; 
于 2014-07-14T20:03:43.640 に答える