iOS:具有一对多关系的核心数据更新对象

时间:2014-02-25 15:38:33

标签: ios core-data nsfetchrequest nsentitydescription

在我的应用中,我有此代码来更新数据库:

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'中调用它们 我一无所获 你能帮助我吗? 感谢

1 个答案:

答案 0 :(得分:3)

它的工作方式与使用.name,.val和.pos。

的方式相同

一对一关系将返回一个对象,一对多关系将返回一个NSSet。

假设您的一对一关系是从Struct到Bar,关系名称是bar,您将通过使用struct.bar获得一个Bar对象。

编辑: 如果要将新对象添加到一对多关系中,则应使用[struct addFooObject:];其中Foo是你的对象名称。