2

対多関係のために CoreData データモデルと NSManagedObjects を正しく構成する方法は? xcdatamodeld ファイルの構成が間違っているように感じますが、何が問題なのかわかりません。CoreData を選択して、新しいシングル ビュー プロジェクトを生成しました。問題を説明できるので、次のコードは簡単です。

Parent *parent = [NSEntityDescription insertNewObjectForEntityForName:@"Parent"      inManagedObjectContext:[self managedObjectContext]];

Child *child = [NSEntityDescription insertNewObjectForEntityForName:@"Child" inManagedObjectContext:[self managedObjectContext]];    

child.parent = parent;

私が電話するとき

[parent.children count];

キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '-[子カウント]: 認識されないセレクターがインスタンス 0x7450370 に送信されました'

電話すると

NSMutableSet *children = [parent mutableSetValueForKey:@"children"];

「エンティティ 'Parent' の NSManagedObjects は、プロパティ 'children' の -mutableSetValueForKey: をサポートしていません」

また、次のような子コレクションを変更するために生成された追加/削除メソッドが生成されていないようです。

- (void)addChildObject:(Child *)value;
- (void)removeChildObject:(Child *)value;

xcdatamodeld

エンティティ


  • 関係: 親
    先: 親
    逆: 子


  • 関係: 子
    宛先: 子
    逆: 親

  • 構成 (デフォルト)
    エンティティ: 子
    クラス: 子

    エンティティ: 親
    クラス: 親

Parent.h

@interface Parent : NSManagedObject
  @property (nonatomic, retain) NSSet *children;
@end

親.m

@implementation Parent
  @dynamic children;
@end

Child.h

@interface Child : NSManagedObject
  @property (nonatomic, retain) NSManagedObject *parent;
@end

Child.m

@implementation Child
  @dynamic parent;
@end
4

2 に答える 2

3

管理対象オブジェクトのサブクラス ファイルを作成するには、Xcode で「Editor -> Create NSManagedObject Subclass...」を使用する必要があります。これにより、適切なアクセサー関数を使用できます。もう 1 つの利点は、Xcode がアクセサー関数を認識し、オートコンプリートを行うことです。

childrenCore Data Inspector でリレーションシップが「対多リレーションシップ」として定義されていることも確認してください。

于 2012-10-20T13:35:58.900 に答える