【问题标题】:ios - Core Data updating recordsios - 核心数据更新记录
【发布时间】:2012-07-02 01:13:27
【问题描述】:

我目前正在浏览文档和网络,但没有看到我要查找的内容,我只想确认我要查找的内容是否存在:-)

据我了解 - 这行代码允许我将一条记录添加到我通过 Core Data 在我的应用程序中显示的 SQLite 数据库中:

NSManagedObject *newSoftware = [NSEntityDescription insertNewObjectForEntityForName:

现在有没有类似的行可以让我更新我正在处理的记录?

这样的?

NSManagedObject *newSoftware = [NSEntityDescription updateCurrentObjectForEntityForName:

非常感谢您的反馈:-)

【问题讨论】:

    标签: objective-c ios core-data


    【解决方案1】:

    要更新记录,您只需更新NSManagedObject 的属性。如果您使用的是 CoreData,则每个“表”都应该有 NSManagedObjects。查询数据库后获取对对象的引用(使用NSFetchRequest)。然后你可以像这样更新记录:myObject.firstName = "John"; 当您准备好更新 Sqlite 数据库中的对象时,只需调用您的 NSManagedContextsave 方法。我建议使用 CoreData 示例应用程序(如 Xcode 生成的默认应用程序)来更好地理解这一点。

    【讨论】:

    • 注意:myObject.firstName = @"John"; 仅在您创建了 NSManagedObject 子类时才有效。如果你没有这样做,那么你需要这样做[myObject setValue:@"John" forKey:@"firstName"]
    • 在我问这个问题之前我已经设置好了,但它没有更新记录,而是将其添加为新记录。
    【解决方案2】:

    这是我之前的回答。很详细的了解是怎么回事。

    How to update existing object in Core Data?

    根据 fumoboy007 评论,如果您尚未为托管对象设置子类,则必须通过 KVC 更新您的对象。如果你还没有,我建议创建它。代码看起来更简洁,因为您可以通过属性访问托管对象。

    这里有一个链接:

    organising-core-data-for-ios

    【讨论】:

    • 嗨,我还有一个问题很抱歉希望你不介意:-) 而不是@"title == %@", @"Some Title"];就像在你给我的链接中我使用 @"name == %@", self.appNameTxtFld.text];现在的问题是我在数组中的所有信息行都被改变了,而不仅仅是我选择的那一个。如何让我的行动更加具体?
    • @JeffKranenburg 抱歉,我无法理解,也许可以在您的答案中添加一个编辑并在那里解释。我会尽力帮助你。谢谢。
    • 感谢您的帮助,我回到了绘图板上,因为我最终编写了这么多代码,它开始看起来像意大利面条丛林:-) 我现在开始工作了,不完全是在这个方式,但我现在明白了。当我遇到核心数据问题时,我会把你留在我的求助人员列表中。你似乎很了解那部分:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多