0

コア データに 1 対多の関係が設定されています。「メイン」エンティティからオブジェクトを表示/追加/削除できますが、メインエンティティごとにサブオブジェクトの個別のリストを持つ必要がある多くの「サブ」エンティティにオブジェクトを表示/追加/削除したいと考えています。

私はこのコードを試しました:

NSManagedObjectContext *context = [[DataSingleton sharedSingleton] thisMain].managedObjectContext;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
                               entityForName:@"Subs" inManagedObjectContext:context];
[fetchRequest setEntity:entity];

NSError *error;
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];

wolArray = [NSMutableArray arrayWithArray:fetchedObjects];

[[DataSingleton sharedSingleton] thisMain] は、サブを取得しようとしているメインです。私はこれを間違っていますか?すべてのメインのすべてのサブを提供しているようです。

間違って追加している可能性があり、メインからサブに追加されていない可能性があります (それが可能であれば?)

これは私がそれらを追加した方法です:

NSManagedObjectContext *context = [[DataSingleton sharedSingleton] thisMain].managedObjectContext;
Subs *subsInfo = [NSEntityDescription
                                insertNewObjectForEntityForName:@"Subs"
                                inManagedObjectContext:context];
subsInfo.name = [newDevice objectForKey:@"name"];
subsInfo.address = [newDevice objectForKey:@"address"];
subsInfo.post = [newDevice objectForKey:@"post"];
NSError *error;
if (![context save:&error]) {
    NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
4

1 に答える 1

3

thisMainが「メイン」オブジェクトでありsubs、「メイン」から「サブ」への 1 対多の関係である場合、次のことができます。

NSArray *thisSubs = [thisMain.subs allObjects];

のすべての「サブ」の配列を取得しthisMainます。そのためのフェッチ要求は必要ありません。

2 番目のタスクでは、"Subs" から "Main" への逆関係 "main" を定義する必要があります。新しい「Subs」オブジェクトを作成したらsubsInfo

subsInfo.main = thisMain;

それをメインオブジェクトに追加します。

于 2012-09-09T20:34:46.150 に答える