在我的应用程序中,我有以下代码来更新数据库:
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest=[NSFetchRequest fetchRequestWithEntityName:@"Struct"];
NSError *error = nil;
for (id element in array){
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"id==%@",[element objectForKey:@"id"]]];
Struct *struct = [[context executeFetchRequest:fetchRequest error:&error] lastObject];
if (struct != nil){
//updating value of attributes
struct.name = [element objectForKey:@"n"];
struct.val = [element objectForKey:@"val"];
struct.pos = [element objectForKey:@"pos"];
}
else{
//create a new identity
}
}
一切都好,但我还有其他两个与 Struct 相关的对象:
“Id_Loc”(一对多) 「详情」(一对一)
我不知道如何更新它们,我不知道如何从我的对象“Struct”调用它们 我什么也没找到 你能帮助我吗? 谢谢
最佳答案
它的工作方式与您使用 .name、.val 和 .pos 的方式相同。
一对一关系将返回一个对象,一对多关系将返回一个 NSSet。
假设您的一对一关系是从 Struct 到 Bar 并且关系名称是 bar,您将通过使用 struct.bar 收到一个 Bar 对象。
编辑: 如果你想向一对多关系添加新对象,你应该使用 [struct addFooObject:];其中 Foo 是您的对象名称。
关于iOS:具有一对多关系的核心数据更新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22019016/