将NSUUID存储在Core Data中导致错误

时间:2016-01-28 07:40:15

标签: swift core-data nsuuid

我正在尝试使用我的代码将蓝牙设备的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转换为String并存储到SQLite中。但它不太合适。任何人都可以建议我如何将NSUUID存储到SQLite中?谢谢

1 个答案:

答案 0 :(得分:2)

如果我想保存NSUUID并稍后返回同一对象的实例,我会声明该属性使用Core Data“transformable”类型。对于符合NSCoding协议(NSUUID所做的)的任何类,Core Data将自动调用NSCoding方法来保存/加载原始类的实例。然后我可以只分配一个NSUUID作为属性值,然后回读一个NSUUID,Core Data将处理将其转换为/它知道如何处理的表单。