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

Posted

技术标签:

【中文标题】iOS:具有一对多关系的核心数据更新对象【英文标题】:iOS: core data update object with one- with to-many relationship 【发布时间】:2014-02-25 15:38:32 【问题描述】:

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

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】:

它的工作方式与您使用 .name、.val 和 .pos 的方式相同。

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

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

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

【讨论】:

以上是关于iOS:具有一对多关系的核心数据更新对象的主要内容,如果未能解决你的问题,请参考以下文章

iphone核心数据:无法删除具有一对多关系的数据

核心数据 - 具有一对多关系的实体正在检索除“关系”实体之外的所有实体对象的属性

在插入新的子对象时,父子对象传递与多级的一对多关系。 IOS核心数据

具有核心数据的一对多表格视图

iOS核心数据如何使用NSPredicate根据一对多的子属性查找父对象?

快速获取具有一对多关系的核心数据