から前回フェッチしたオブジェクトから削除されます。
ある時点で、最新のDayをフェッチして、Transactions
を期間(月単位と年単位)でフィルタリングし、別のDay
オブジェクトに追加して保存します。ここでNSSetフィルタオブジェクトは、私は私のコアデータには多くの関係のセットアップに1を持っているコアデータ
は私のコードです:
// 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?
}
をこれもなりますコアデータ内を正しく保存しますが、この時点以降、(月次および年次)フィルタリングされたトランザクションはlastDay
オブジェクトから削除されています。
このオブジェクトを再度フェッチすると、トランザクションは終了します。
私は何が起こっているのか分かりません。フィルタリングされたすべてのタイプのトランザクションも削除されているようです。
何が起こっているのか把握するのに一日中努力しましたが、問題を把握できないようです。
フィードバックをいただければ幸いです。
は結果を壊す日と取引関係ですか? lastDayはフィルタリングされたトランザクションに関連しますが、新しいDayレコードを作成し、フィルタリングされたトランザクションの所有権を新しいレコードに変更したら? – bubuxu
どうすればいいですか?私はNSSetの変更可能なコピーを作成しようとしましたが、同じ結果 – Kobe