gpt4 book ai didi

ios - NSSet 过滤的对象从先前从核心数据中获取的对象中删除

转载 作者:行者123 更新时间:2023-11-28 15:58:29 25 4
gpt4 key购买 nike

我的核心数据中有一个一对多的关系设置:

Day <----->> Transactions

一天对象将包含交易的 NSSetDate
在某些时候,我想获取最新的 Day 并通过一段时间(每月和每年)过滤其 Transactions 并将它们添加到另一个 Day 对象并保存它。

这是我的代码:

// get latest day from core data
let lastDay = fetchDays(context: context) { request in
request.sortDescriptors = Day.defaultSortDescriptors
request.fetchLimit = 1
}.first

这将为我提供正确的 Day 对象。在此之后我想获得过滤后的交易:

let filteredTransactions = lastDay?.transactions?.filtered(using: NSPredicate(format: "period IN %@", [.monthly, .yearly]))

过滤交易后,我想将它们添加到新的 Day 对象并将其保存在核心数据中:

context.performChanges {
let day = Day(context: self.context)
day.date = NSDate.today()
day.transactions = filteredTransactions as NSSet?
}

这也将正确保存在 Core Data 中,但在此之后,我过滤掉的交易(每月和每年)已从 lastDay 对象中删除。

如果我再次获取该对象,交易就会消失。
我不知道发生了什么。似乎也删除了任何类型的过滤交易。

我整天都在试图弄清楚发生了什么,但我似乎无法弄清楚问题所在。
对于任何反馈,我们都表示感谢。

最佳答案

创建一个全新的交易列表,并将每笔交易的日期对象设置为新的日期记录:

context.performChanges {
let day = Day(context: self.context)
day.date = NSDate.today()
if let transactions = filteredTransactions {
for t in Array(transactions) {
let transaction = Transactions(context: self.context)
transaction.clone(from: t) // write extension method to Transactions
transaction.day = day
}
}

}

关于ios - NSSet 过滤的对象从先前从核心数据中获取的对象中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41414664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com