在Core Data中存储Swift值类型

cfi*_*her 2 cocoa core-data swift swift2

有没有办法使用storeSwift的value类型,例如enums或者structs在Core Data中?

这样做的最佳方法是什么?

Kam*_*xom 6

它实际上非常简单:只需NSData使用值类型的字节进行初始化.

您的价值类型:

struct MyStruct {
    let x : Int
    let y : Bool
    let z : Double
}
Run Code Online (Sandbox Code Playgroud)

设置和获取数据的功能

func valueToData<T>(var t: T) -> NSData {
    return NSData(bytes: &t, length: sizeof(T))
}

func dataToValue<T>(inout t: T, data: NSData) {
    memcpy(&t, data.bytes, data.length)
}
Run Code Online (Sandbox Code Playgroud)

测试:

let originalValue = MyStruct(x: 3, y: true, z: 1.3)

let data = valueToData(originalValue)

// Save data to CoreData

var s = MyStruct(x: 0, y: false, z: 0)  // Empty Value
dataToValue(&s, data: data) // Initialize with data

// s is MyStruct(x: 3, y: true, z: 1.3)
Run Code Online (Sandbox Code Playgroud)