在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