核心数据一对多关系。许多人都出现了

时间:2012-09-09 19:58:49

标签: ios xcode cocoa-touch core-data

我在核心数据中设置了一对多关系。我可以从'Main'实体查看/添加/删除对象,但是现在我想查看/添加/删除对象到许多'Subs'实体,该实体应该为每个Main实体提供单独的Subs对象列表。

我试过这段代码:

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]是我想要获得Subs for的Main。我做错了吗? 它似乎只给了我所有主要的所有子。

现在有可能我添加错误,并且他们没有被添加到主要的子服务中(如果可能的话?)

这就是我添加它们的方式:

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]);
}

1 个答案:

答案 0 :(得分:3)

如果thisMain是“主要”对象而subs是从“主要”到“潜在”的一对多关系,那么您可以这样做

NSArray *thisSubs = [thisMain.subs allObjects];

获取thisMain的所有“Subs”数组。不需要获取请求。

对于第二项任务,您需要定义从“Subs”到“Main”的反向关系“main”。当您创建新的“Subs”对象subsInfo时,则

subsInfo.main = thisMain;

将其添加到主对象。