简体   繁体   中英

How do I store a Swift Struct in Core Data on iOS?

At the moment I'm storing one of my classes as NSData in a plist and obviously that isn't a good way to do it.

So I'm trying to set up Core Data, but my class has Structs. This is what I have:

import Foundation
import CoreData

class Favourite: NSManagedObject {
    @NSManaged var origin: Stop

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

But this is no good because it says

Property cannot be marked as @NSManaged because its type cannot be represented in Objective-C

Furthermore, if this error did not occur, I don't know what I'd set it up as in my xcdatamodeld file.

I guess I could store the values in the struct and assign on initialisation of the object? Is this the most optimal/clean way?

I will proceed like this :

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

Very interesting article, you should read: http://www.jessesquires.com/better-coredata-models-in-swift/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM