我在两个实体之间有one-to-many
个关系。我正在尝试通过循环加载many
个实体,但似乎没有添加任何内容。这是一个代码示例:
for(int x=0; x<[_array count]; x++)
{
SOCommand* newCommand = [NSEntityDescription insertNewObjectForEntityForName:@"SOCommand" inManagedObjectContext:self.managedObjectContext];
newCommand.commandName = [(NSArray*)[_array objectAtIndex:x]objectAtIndex:0];
newCommand.sshCommand = [(NSArray*)[_array objectAtIndex:x]objectAtIndex:1];
[newModule.socommand.allObjects arrayByAddingObject:newCommand];
}
[self.managedObjectContext save:nil];
newModule
是“父”,在使用前初始化:
SOModule* newModule = [NSEntityDescription insertNewObjectForEntityForName:@"SOModule" inManagedObjectContext:self.managedObjectContext];
要检查是否添加,我尝试执行以下操作:
NSArray* commands = [iteratorModule.socommand allObjects];
if([commands count] >0){
NSLog(@"array was populated");
}
日志未被解雇。
答案 0 :(得分:1)
问题是arrayByAddingObject:
返回一个你没有分配给任何东西的数组。
最好的解决方案就是从newCommand对象设置关系。替换:
[newModule.socommand.allObjects arrayByAddingObject:newCommand];
与
newCommand.module = newModule; //Not sure what the relationship name is here, so it might not be module
另外,我认为您不了解第一行代码,
[newModule.socommand.allObjects arrayByAddingObject:newCommand];
它获取与NSSet
关联的socommand
个对象的newModule
(类似于NSArray的集合),然后使用allObjects
方法将其放入数组形式。 arrayByAddingObject:
返回一个新数组,其中包含一个你不做任何事情的新对象。