2

オブジェクトを 'to-one' 関係に追加しようとしています:

//1. I create the temporary object for the ServerUpdates entity
NSManagedObject *updateObj = [NSEntityDescription insertNewObjectForEntityForName:@"ServerUpdates" inManagedObjectContext:self.managedObjectContext];

//2. I make sure that obj is in the same context (note: I get obj from fetch)
obj = [self.managedObjectContext objectWithID:[obj objectID]];

//3. I then try to add the object to the key - and this is where we get the error
[updateObj setValue:obj forKey:@"fkServerUpdatesToAuthors"];

次のエラーが表示されます。

キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。必要なタイプ = NSManagedObject; 指定されたタイプ = NSManagedObject; 値 = (エンティティ: 作成者; id: 0x74a2290

最初は、これは永続オブジェクトと一時オブジェクトの間の関係を割り当てようとしていたためだと思いましたが、1. と 2. の間に保存を追加すると、同じエラーが発生しました。

注:
NSManagedObject に関連するサブクラスは作成していません。関係の設定は、ServerUpdates エンティティ内の fkServerUpdatesToAuthors (対 1) と Authors エンティティ内の fkAuthorsToServerUpdates (対多) の逆の関係です。

どんな助けでも大歓迎です!

4

3 に答える 3

2

ServerUpdates の CoreData エンティティを削除し、再構築したところ、機能し始めました。

他の人が同じ問題に遭遇した場合: 原因は、誤った NSManagedObject が fkServerUpdatesToAuthors 関係属性に割り当てられたことだと思います。'Authors' NSManagedObject (関係の 'Destination' フィールドで定義) を期待していましたが、'Books' などの別のものを渡していたに違いありません (またはその逆)。

Authors や Books のサブクラスではなく NSManagedObject を使用してオブジェクトにアクセスするように抽象化したため、エラー メッセージは不明です。

要約すると、「Destination」フィールドで定義されているように、正しい NSManagedObject をリレーションシップに送信していることを確認してください。

これが将来誰かに役立つことを願っています。

于 2013-05-27T10:51:54.653 に答える
1

fkServerUpdatesToAuthorsは 1対多の関係であるため、NSSet オブジェクトのみを受け入れると思います。試してみてください:

[updateObj setValue:[NSSet setWithObject:obj] forKey:@"fkServerUpdatesToAuthors"];
于 2013-05-23T13:36:18.073 に答える
0

実際、これらのコア データ エンティティに対応する自動生成ファイルがない場合、このばかげたメッセージが表示されました。xdatamodel にあるエンティティごとに NSManagedObject を生成すると、すべてがうまく機能し始めました。

于 2013-10-23T15:08:42.033 に答える