在Swift中使用Core Data时如何实现计算属性的任何建议?CoreData Swift和瞬态属性获取器
与生成的ManagedObject类,我试图重写消气,但我得到的错误:
'NSManaged' not allowed on computed properties
这意味着你不能覆盖的瞬态(计算值)属性,吸气。
在下面的代码示例中,dateDue
被定义为我模型中的瞬态属性。
请注意@NSManaged行是由Xcode生成的 - 不是由我添加的。
@NSManaged var timeStamp: NSDate
@NSManaged var dateDue: String {
get {
self.willAccessValueForKey("dateDue")
var ddtmp = self.primitiveValueForKey("dateDue") as String?
self.didAccessValueForKey("dateDue")
if (ddtmp == nil)
{
let calendar = NSCalendar.currentCalendar()
let components = calendar.components((NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.MonthCalendarUnit) , fromDate: self.timeStamp)
ddtmp = "\(components.year * 1000 + components.month)"
self.setPrimitiveValue(ddtmp, forKey: "dateDue")
}
return ddtmp!
}
}
它是托管对象模型中的一个属性。 Juts扩展,我试图复制一个苹果示例程序使用的技术 - 但是苹果示例是用Objective C编写的 - 实际上它是在Xcode(主细节应用程序)中提供的模板。 – 2014-09-21 17:35:23
是的,但是ObjC不会执行'@ NSManaged' - 如果你想包装底层属性,你不应该在这里使用'@ NSManaged'。 '@ NSManaged'告诉编译器,在运行时会提供属性实现。在明确提供实现的同时使用'@ NSManaged'是一个矛盾。 – iluvcapra 2014-09-21 17:50:05
好的谢谢。我会重新去除NSManaged。让你知道我如何得到:) – 2014-09-21 18:20:35