我在我的核心数据一对多的关系设置:的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