You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftData一对多关联异常:多属性场景下数据匹配错误

SwiftData一对多关联多属性时的关联异常问题

当SwiftData的@Model类与另一个@Model类存在一对多关系,且包含多个关联属性时,SwiftData在关联对应数据时会出现异常。

示例代码

以下代码定义了两个SwiftData模型:Book和Page。Book类包含单个Page类型的contentPage属性,以及存储多个Page实例的可选数组pages:

@Model
class Book {
    var id = UUID()
    var title: String
    var contentPage: Page
    var pages: [Page]?
    
    init(id: UUID = UUID(), title: String, contentPage: Page) {
        self.id = id
        self.title = title
        self.contentPage = contentPage
        contentPage.book = self
    }
    
    func addPage(page: Page) {
        if pages == nil {
            pages = []
        }
        page.book = self
        pages?.append(page)
    }
}

enum PageType: String, Codable {
    case contentsPage = "Contents"
    case picturePage = "Picture"
    case textPage = "Text"
    case blankPage = "Blank"
}

@Model
class Page {
    var id = UUID()
    var pageType: PageType
    var pageNumber: Int
    var content: String
    var book: Book?
    
    init(id: UUID = UUID(), pageType: PageType, content: String, pageNumber: Int) {
        self.id = id
        self.pageType = pageType
        self.pageNumber = pageNumber
        self.content = content
    }
}

问题现象

创建Book实例时未设置pages属性(保持为nil),但尝试迭代pages时却获取到contentPage的数据,这表明SwiftData的关联处理存在异常。

内容的提问来源于stack exchange,提问作者perfopt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 08:22:23