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

标签 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”调用它们 我什么也没找到 你能帮助我吗? 谢谢

最佳答案

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

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

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

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

关于iOS:具有一对多关系的核心数据更新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22019016/

相关文章:

ios - 以编程方式发送/接收数据短信iOS

ios - NSPredicate,executeFetchRequest 崩溃

ios - 触发 Apple Watch 通知

ios - Swift FMDB 代码说明

android - 适用于 iOS 和 Android 应用程序的服务器端数据库

multithreading - Core Data,在后台线程中修改 NSManagedObject

core-data - 如何知道 NSPredicate 中抽象实体的类类型?

ios - FetchRequest - NSArray 元素无法匹配 Swift 数组元素类型 - Swift 2.0

objective-c - NSSortdescriptor 对从 NSManagedContext 获取结果无效

ios - IO::Socket::INET 返回一个空套接字