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
相关产品推荐
相关产品推荐

