You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SwiftData单向关系保存失败报错Code=1570的问题咨询

SwiftData单向关系保存失败报错Code=1570的问题咨询

我尝试在SwiftData项目里实现单向关系,按道理这应该是可行的,但一直被报错卡着,实在摸不透原因,想请大家帮忙分析下。

我定义了这样两个模型:

@Model
final class Quota {
    @Attribute(.unique) var id: UUID
    var allowance: Int
    @Relationship(inverse: nil) var fish: Fish
 
    init(id: UUID = UUID(), fish: Fish, allowance: Int) {
        self.id = id
        self.fish = fish
        self.allowance = allowance
    }
}
 
@Model
final class Fish {
    @Attribute(.unique) var id: Int
    var name: String
    init(id: Int, name: String) {
        self.id = id
        self.name = name
    }
}

之后我尝试用下面的代码保存Quota记录:

let quota: Quota = .init(fish: Fish(id: 2, name: "Salmon"), allowance: 50)
modelContext?.insert(quota)
try save()

但每次都会触发这个错误:

SwiftData.DefaultStore save failed with error: Error Domain=NSCocoaErrorDomain Code=1570 "%{PROPERTY}@ is a required value." UserInfo={NSValidationErrorObject=<NSManagedObject: 0x600002217390> (entity: Fish; id: 0x83319d001151328d <x-coredata://C76A2A64-146E-432F-A565-319B5A2F23F5/Fish/p12>; data: { id = nil; }), NSLocalizedDescription=%{PROPERTY}@ is a required value., NSValidationErrorKey=id, NSValidationErrorValue=null} %{PROPERTY}@ is a required value.

特别奇怪的是,如果我给两个模型加上反向关系,数据就能正常保存。我完全清楚单向和双向关系的区别,当前的业务场景确实只需要单向关系。另外补充个细节:数据库里本来就存在对应的Fish记录,但就算我删掉现有记录再尝试保存,还是会报同样的错。

有没有大佬能帮我解惑,为什么用单向关系保存就会出现这个错误呢?麻烦大家了!

备注:内容来源于stack exchange,提问作者Shane H. Kalinski

火山引擎 最新活动