【发布时间】:2017-05-20 11:55:09
【问题描述】:
只是我有一个应用程序和今天的扩展程序。我还有两个实体:Goal 和 Service。
@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 something on completion
})
【问题讨论】:
-
你能提供你执行更改的代码吗?还有你为什么用
NSManagedObjectContext.mr_default().fetch(fetchRequest)而不是self.managedObjectContext.fetch(fetchRequest) -
我应该使用 self 吗?总是相同的上下文?
-
恕我直言,您应该使用 self 但我无法 100% 判断,因为我不知道您如何使用此类。上下文不一定必须相同,如果是,则没问题,但在某些情况下,应用程序甚至可能崩溃。
-
好的,我稍后会告诉你...我如何进行更改...
标签: ios swift core-data magicalrecord