我正在使用 CoreData,我有一个 Book 实体和一个 ReadingSession 实体。每本书都有许多阅读会话。
如果我将此计算属性添加到 Book 类,它可以工作:
var sessions: [ReadingSession] {
let request = NSFetchRequest(entityName: "ReadingSession")
let predicate = NSPredicate(format: "book = %@", self)
request.predicate = predicate
return try! DataController.sharedInstance.managedObjectContext.executeFetchRequest(request) as! [ReadingSession]
}
但如果我添加这个,它不会:
var sessions: [ReadingSession] {
return readingSession?.allObjects as! [ReadingSession]
}
最后一个示例有时返回正确的数组,有时只返回一个空数组。我对计算属性中的其他关系尝试了同样的事情,结果是一样的。
这是为什么?我有理由不尝试这样做吗?我的第一个示例是有效的解决方法,还是会在以后给我带来问题?我是否应该为此放弃使用计算属性并在需要时重复代码?
提前致谢!
丹尼尔