将 NSUUID 存储在核心数据中导致错误

storing NSUUID in Core Data causing error

我目前正在尝试使用我的代码将蓝牙设备的 NSUUID 保存到核心数据中,如下所示:

let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context = appDel.managedObjectContext
let newDevice = NSEntityDescription.insertNewObjectForEntityForName("Devices", inManagedObjectContext: context)
newDevice.setValue(connectingPeripheral.identifier, forKey: "identifier")
newDevice.setValue(TextField.text, forKey: "name")
do{
try context.save()
} catch _ as NSError{

}

错误发生在

newDevice.setValue(connectingPeripheral.identifier, forKey: "identifier")

由于我无法将 NSUUID 存储到 SQLite 数据库中。我能想到的唯一方法是将 NSUUID 转换为字符串并存储到 SQLite 中。但它不是那么合适。谁能建议我如何将 NSUUID 存储到 SQLite 中?谢谢

如果我想保存一个 NSUUID 并稍后取回同一对象的实例,我会声明 属性 使用 Core Data "transformable" 类型。对于任何符合 NSCoding 协议(NSUUID 符合)的 class,Core Data 将自动调用 NSCoding 方法来 save/load 原始 class。然后我可以只分配一个 NSUUID 作为属性值,然后读回一个 NSUUID,Core Data 会处理将它转换成 to/from 它知道如何处理的形式。