gpt4 book ai didi

swift - 失败的 NSManagedObject 仍在保存

转载 作者:行者123 更新时间:2023-11-30 12:56:45 25 4
gpt4 key购买 nike

在我的自定义 NSManagedObject 中,我使用了一个可失败的初始化程序。但即使它失败并且我保存了 NSManagedObjectContext,该对象也会被保存到 Core Data 中。

NSManagedObject:

class Foo: NSManagedObject {

@NSManaged var a: String
@NSManaged var b: String

convenience init?(context: NSManagedObjectContext, a: String?, b: String?) {
let description = NSEntityDescription.entity(forEntityName: "Foo", in: context)!
self.init(entity: description, insertInto: context)

if let a = a { self.a = a } else { return nil }
if let b = b { self.b = b } else { return nil }
}
}

如何使该初始化程序失败并仍然保存上下文而不保存失败的对象?

最佳答案

你需要尽快失败。

convenience init?(context: NSManagedObjectContext, a: String?, b: String?) {
if a == nil {return nil}
if b == nil {return nil}
// ...
}

这是合法的,因为在现代 Swift 中,允许在履行初始化程序的“契约”之前失败。

关于swift - 失败的 NSManagedObject 仍在保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40324742/

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