gpt4 book ai didi

ios - 通过循环将托管对象加载到 Core Data 中

转载 作者:行者123 更新时间:2023-11-29 03:23:22 25 4
gpt4 key购买 nike

两个实体之间存在一对多关系。我试图通过循环加载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");
}

日志没有被触发。

最佳答案

问题是 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];

获取newModule关联的socommand对象的NSSet(类似于NSArray的集合),然后将其放入数组形式使用 allObjects 方法。 arrayByAddingObject: 返回一个包含新对象的新数组,您无需对其进行任何操作。

关于ios - 通过循环将托管对象加载到 Core Data 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20796027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com