我在我的核心數據一對多的關係設置:的NSSet過濾對象從以前提取的對象中刪除從核心數據
Day <----->> Transactions
一天對象將包含交易的NSSet
和Date
。
在某些時候,我想獲取最新的日期並獲取按期(每月和每年)過濾的Transactions
,並將它們添加到另一個Day
對象並保存。
這裏是我的代碼:
// get latest day from core data
let lastDay = fetchDays(context: context) { request in
request.sortDescriptors = Day.defaultSortDescriptors
request.fetchLimit = 1
}.first
這將讓我正確的日期對象。這之後,我想過濾的交易:
let filteredTransactions = lastDay?.transactions?.filtered(using: NSPredicate(format: "period IN %@", [.monthly, .yearly]))
後,我有過濾的交易我想將它們添加到新的一天對象,並保存在覈心數據:
context.performChanges {
let day = Day(context: self.context)
day.date = NSDate.today()
day.transactions = filteredTransactions as NSSet?
}
這也將正確保存在Core Data內部,但在此之後,我從lastDay
對象中刪除了已過濾的事務(每月和每年)。
如果我再次獲取該對象,交易消失了。
我不知道發生了什麼事。似乎任何被過濾的交易類型也被刪除。
我整天試圖弄清楚發生了什麼,但我似乎無法弄清楚問題所在。
任何反饋將不勝感激。
是白天和交易打破了結果之間的關係? lastDay與已過濾的交易相關,但是在您創建新的Day記錄並將已過濾的交易的所有權更改爲新記錄之後? – bubuxu
我能做什麼?我嘗試創建NSSet的可變副本,結果仍然相同 – Kobe