2016-06-17 2 views
5

Momentan speichere ich eine meiner Klassen als NSData und offensichtlich ist das kein guter Weg.Wie speichere ich ein Swift Struct in Core Data unter iOS?

Also ich versuche, Core Data einzurichten, aber meine Klasse hat Structs. Das ist, was ich habe:

import Foundation 
import CoreData 

class Favourite: NSManagedObject { 
    @NSManaged var origin: Stop 

    struct Stop { 
     var name: String; 
     var id: String; 
    } 
} 

Aber das ist nicht gut, weil es sagt

Eigenschaft kann nicht als @NSManaged markiert werden, weil seine Art nicht Weiteren in Objective-C

dargestellt werden kann, Wenn dieser Fehler nicht auftritt, weiß ich nicht, was ich in meiner xcdatamodeld-Datei eingerichtet habe.

Ich denke, ich könnte die Werte in der Struktur speichern und bei der Initialisierung des Objekts zuweisen? Ist das der optimalste/sauberste Weg?

+2

Betrachten Sie Ihr Modell zur Neugestaltung der Struktur in eine Core Data Einheit einzuschalten. – vadian

Antwort

6

werde ich wie folgt vorgehen:

import Foundation 
import CoreData 

    struct Stop { 
     var name: String; 
     var id: String; 
    } 

    class Favourite: NSManagedObject { 

     @NSManaged var name: String 
     @NSManaged var id: String 

     var stop : Stop { 
      get { 
       return Stop(name: self.name, id: self.id) 
      } 
      set { 
       self.name = newValue.name 
       self.id = newValue.id 
      } 
     } 
    } 

Sehr interessanter Artikel, lesen Sie bitte: http://www.jessesquires.com/better-coredata-models-in-swift/

+0

Dies war, was ich vermeiden wollte zu tun, da ich ein paar dieser Structs habe, aber das scheint zu sein, was ich am Ende tun muss. Danke –

+0

Die andere Möglichkeit besteht darin, "Stop" zu "NSCoding" zu machen, aber das würde mehr oder weniger dasselbe bedeuten, selbst wenn es auf einer einfachen Swift-Struktur durchgeführt werden könnte. –

Verwandte Themen