私は CoreData を使用しており、Book エンティティと ReadingSession エンティティがあります。各 Book には多くの ReadingSessions があります。
この計算されたプロパティを 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]
}
この最後の例では、正しい配列が返されることもあれば、空の配列が返されることもあります。計算されたプロパティ内の他の関係で同じことを試しましたが、結果は同じです。
何故ですか?これを試してはいけない理由はありますか?私の最初の例は有効な回避策ですか、それとも後で問題が発生しますか? これに計算されたプロパティを使用することをあきらめて、必要なときにコードを繰り返す必要がありますか?
前もって感謝します!
ダニエル