2
A
回答
4
这实际上很简单:只需使用值类型的字节初始化NSData
即可。
你的价值类型:
struct MyStruct {
let x : Int
let y : Bool
let z : Double
}
函数来设置和获取数据
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)
}
测试:
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)
1
enum
的一个合适的方法是用Core Data支持的原始类型声明枚举,并使用自定义实例属性将枚举大小写转换为原始大小,反之亦然。
例如:
enum State : Int32 {
case None, Empty, Full
}
@NSManaged var state: Int32
var stateEnum: State {
get {
return State(rawValue: state)!
}
set {
state = newValue.rawValue
}
}
甲struct
必须是“序列化”以类似的方式 - 说不定它可以由一个核心数据实体来甚至表示 - 但是这取决于结构体(URE)的结构。
相关问题
- 1. 斯威夫特3核心数据
- 2. 核心数据错误 - 斯威夫特
- 3. 斯威夫特3.隐藏使用核心数据
- 4. 在核心数据保存自定义类斯威夫特
- 5. 崩溃:斯威夫特,对已经存在的核心数据
- 6. 核心数据验证:从Objective-C的斯威夫特
- 7. 核心数据:设置的NSSet斯威夫特
- 8. 在哪里实施NSValueTransformer的核心数据在斯威夫特
- 9. 无法显示在tableview中的核心数据斯威夫特
- 10. 保存不与核心数据在斯威夫特
- 11. 斯威夫特3核心数据NSExpression总是返回0
- 12. 斯威夫特3 - 保存和核心数据
- 13. NSPredicate用斯威夫特和核心数据
- 14. 斯威夫特3 IOS 9和IOS 10核心数据
- 15. 斯威夫特:从中心
- 16. 斯威夫特转换斯威夫特
- 17. 斯威夫特2斯威夫特3
- 18. 斯威夫特 - JSQMessagesViewController与斯威夫特
- 19. 问题进行的UITableViewController与塞格斯,核心数据和斯威夫特
- 20. 斯威夫特:未声明的类型
- 21. 斯威夫特:在泛型类
- 22. 斯威夫特通用引用类型
- 23. 斯威夫特:引用泛型类
- 24. 斯威夫特可选类型语法
- 25. 斯威夫特宏观等同类型
- 26. 斯威夫特
- 27. 斯威夫特
- 28. 斯威夫特
- 29. 斯威夫特
- 30. 斯威夫特