gpt4 book ai didi

ios - 如何在 Swift 4 CoreData 中设置合并策略

转载 作者:搜寻专家 更新时间:2023-11-01 05:51:58 28 4
gpt4 key购买 nike

我正在尝试更新 CoreData 中的实体。这是我的一些声明。

static var appDelegate = UIApplication.shared.delegate as! AppDelegate
static var context = appDelegate.persistentContainer.viewContext
static var entity = NSEntityDescription.entity(forEntityName: "PData", in: context)
static var newPData = NSManagedObject(entity: entity!, insertInto: context)

我有点确定它们是静态的这一事实无关紧要。

PData 是实体的名称(持久数据的缩写)。

稍后,我使用 newPData.setValue("foo", forKey: "bar") 设置了我想要保存的值,但是当我实际尝试使用 保存它们时>context.save(),我得到 NSCocoaErrorDomain Code 133020 “Could not merge changes.”

我应该提一下,这是在删除 PData 中的现有条目(用新实体实例替换旧实体实例)后直接发生的。

我读了一些书,发现这个错误的原因是 Swift 处理 CoreData 合并冲突的默认方式是抛出一个错误。我想更改我的 CoreData 设置,以便内存中的更改覆盖已存储在 CoreData 实体中的更改,但我不确定我将如何执行此操作。

Apple 文档显示了许多不同的合并策略选项,但没有显示如何实现它们的示例。我认为我需要使用的是 NSMergeByPropertyStoreTrumpMergePolicy ,但我不知道如何将上述政策实际设置为合并政策。

最佳答案

我找到了答案 - 要设置上下文的合并策略,您只需这样做

context.mergePolicy = NSMergePolicy(merge: NSMergePolicyType.mergeByPropertyObjectTrumpMergePolicyType)

我在尝试做时被绊倒了

context.mergePolicy = mergeByPropertyObjectTrumpMergePolicyType)

但我想有必要生成一个 NSMergePolicy 对象。我只是假设实际的合并策略 (mergeByPropertyObjectTrumpMergePolicyType) 默认是正确的类型。

关于ios - 如何在 Swift 4 CoreData 中设置合并策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50194151/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com