0
単にアプリがあり、今日拡張機能があります。また、私は2つの実体を持っています:ゴールとサービス。今日の拡張機能でレコードを作成してアプリ内で更新したときの変更は、今日の拡張機能では表示されません
@objc(Goal)
class Goal: NSManagedObject {
@NSManaged var identifier: String
@NSManaged var startDate: Date
@NSManaged var endDate: Date
private var services: [Service] {
let predicate = NSPredicate(format: "date >= %@ && date <= %@", startDate as NSDate, endDate as NSDate)
return Service.mr_findAll(with: predicate) as! [Service]
}
var duration: Int64 {
return services.reduce(0) { $0 + $1.duration }
}
}
私は拡張子今日でgoal
に関連service
を作成し、アプリ内でそれを更新すると、アプリでは正しく表示されている間、更新された結果が今日の拡張子で表示されません。どうして?
これは私が作成し、拡張または拡張でレコードを更新する方法である:
MagicalRecord.save({ context in
Service.createOrUpdate(withDuration: duration, date: Date(), identifier: identifier, in: context)
}, completion: { _, error in
//do sth on completion
})
変更を行う場所でコードを入力できますか?なぜself.managedObjectContext.fetch(fetchRequest)の代わりに 'NSManagedObjectContext.mr_default()。fetch(fetchRequest)'を使用していますか – Mateusz
私は自己を使うべきですか?常に同じ文脈? –
IMHO自分で使うべきですが、このクラスの使い方がわからないので100%で教えてもらえません。コンテキストは必ずしも同じである必要はありませんが、そうであれば問題はありませんが、場合によってはアプリがクラッシュする可能性もあります。 – Mateusz