2017-01-05 5 views
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 
}) 
+0

変更を行う場所でコードを入力できますか?なぜself.managedObjectContext.fetch(fetchRequest)の代わりに 'NSManagedObjectContext.mr_default()。fetch(fetchRequest)'を使用していますか – Mateusz

+0

私は自己を使うべきですか?常に同じ文脈? –

+0

IMHO自分で使うべきですが、このクラスの使い方がわからないので100%で教えてもらえません。コンテキストは必ずしも同じである必要はありませんが、そうであれば問題はありませんが、場合によってはアプリがクラッシュする可能性もあります。 – Mateusz

答えて

関連する問題