2014-07-14 12 views
13

Qualcuno sa o ha un esempio di come gestire i valori transitori dei dati di base con Swift? So di usare @NSManaged prima delle proprietà, ma non riesco a capire come codificare la logica per costruire i valori transitori usando Swift.Valori transitori dei dati di base con Swift

+2

Avere @NSManaged non mi consente di creare un getter per la proprietà transiente in Swift. Mi piacerebbe sapere come funziona la proprietà transitoria anche in Swift. – Sam

+0

possibile duplicato di [getter di attributi CoreData Swift e transient] (http://stackoverflow.com/questions/25960555/coredata-swift-and-transient-attribute-getters) – Ian

+0

Hai risolto questo problema? Il link fornito è stato d'aiuto? – Orion

risposta

8

Contrassegnare il campo transitorio nel modello dati per attributo particolare (ad esempio sectionTitle).
Creare classe per quell'entità, essa sarà simile a

class Message: NSManagedObject { 

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

modificarlo e renderlo in questo modo:

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 
    } 
} 

Update-Swift4
Usa @objc tag per Swift 4 come:

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

Funziona bene se "Codegen" nella proprietà Entity è impostato su "manual/none". Come gestirlo "Codegen" è impostato su "Category/Extension"? – Satyam

+1

Con swift 4 ho dovuto usare "@objc dynamic var sectionTitle: String? {...}" in un caso simile per farlo funzionare. – user3687284

+0

Sì, permettimi di aggiornare la risposta per Swift 4 – D4ttatraya

1

Dovremmo utilizzare willAccessValueForKey e didAccessValueForKey per supportare KVO

Problemi correlati