2014-07-14 60 views
13

有誰知道或者有過如何用Swift處理核心數據瞬態值的例子?我知道在屬性之前使用@NSManaged,但無法弄清楚如何使用Swift編寫邏輯來構建瞬態值。使用Swift核心數據瞬態值

+2

有@NSManaged不允許我創建一個getter在斯威夫特的瞬態特性。我想知道Swift中的瞬態屬性是如何工作的。 – Sam

+0

[CoreData Swift和瞬態屬性獲取器]的可能重複(http://stackoverflow.com/questions/25960555/coredata-swift-and-transient-attribute-getters) – Ian

+0

您是否解決了此問題?給定的鏈接有幫助嗎? – Orion

回答

8

在數據模型中爲特定屬性(例如sectionTitle)複選標記瞬態字段。
該實體創建類,它看起來像

class Message: NSManagedObject { 

    @NSManaged var body: String? 
    @NSManaged var time: NSDate? 
    @NSManaged var sectionTitle: String? 
} 

編輯它,讓它像這樣:

class Message: NSManagedObject { 

    @NSManaged var body: String? 
    @NSManaged var time: NSDate? 

    var sectionTitle: String? { 
     return time!.getTimeStrWithDayPrecision() 
     //'getTimeStrWithDayPrecision' will convert timestamp to day 
     //just for e.g. 
     //you can do anything here as computational properties 
    } 
} 

更新 - Swift4
使用@objc標籤的雨燕4爲:

@objc var sectionTitle: String? { 
    return time!.getTimeStrWithDayPrecision() 
} 
+0

如果Entity屬性中的「Codegen」設置爲「manual/none」,則此方法可行。如何處理「Codegen」被設置爲「Category/Extension」? – Satyam

+1

使用swift 4我不得不在類似的情況下使用「@objc dynamic var sectionTitle:String?{...}」來使其工作。 – user3687284

+0

是的,讓我更新Swift 4的答案 – D4ttatraya

1

我們應該用willAccessValueForKey和didAccessValueForKey支持KVO