【发布时间】:2014-11-15 14:53:58
【问题描述】:
关于在 Swift 中使用 Core Data 时实现计算属性有什么建议吗?
使用生成的 ManagedObject 类,我尝试覆盖 getter,但出现错误:
计算属性上不允许“NSManaged”
这意味着您不能覆盖临时(计算)属性的 getter。
在下面的代码示例中,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!
}
}
【问题讨论】: