iOS将CLLocation核心数据存储为可转换的NSKeyedUnachiveFromDataTransformerName错误核心数据:警告:无NSValueTransformer
我正在尝试将CLLocation对象存储在核心数据中。我从DataTransformerName设置核心数据NSKeyedUnachiveFromDataTransformerName: 但当我创建NSEntityDescription以添加对象时:iOS将CLLocation核心数据存储为可转换的NSKeyedUnachiveFromDataTransformerName错误核心数据:警告:无NSValueTransformer,ios,iphone,core-data,cllocation,Ios,Iphone,Core Data,Cllocation,我正在尝试将CLLocation对象存储在核心数据中。我从DataTransformerName设置核心数据NSKeyedUnachiveFromDataTransformerName: 但当我创建NSEntityDescription以添加对象时: Locations *location= [NSEntityDescription insertNewObjectForEntityForName:@"Locations" inManagedObjectContext:self.cdManage
Locations *location= [NSEntityDescription insertNewObjectForEntityForName:@"Locations" inManagedObjectContext:self.cdManager.managedObjectContext];
我得到了这个错误:
CoreData: warning: no NSValueTransformer with class name 'NSKeyedUnarchiveFromDataTransformerName' was found for attribute 'locations' on entity 'Locations'
你们有谁知道我做错了什么,或者为什么我会犯这样的错误?或者这是如何解决的
我非常感谢您的帮助
CLLocation
未实现NSCoding
协议,因此无法像这样进行转换
我建议将纬度和经度存储在核心数据中,然后您可以根据需要从数据创建
CLLocation
实例。它告诉您问题出在哪里。您已将模型配置为使用名为NSKeyedUnarchiveFromDataTransformerName
的类作为值转换器,但没有具有该名称的类
输入的字符串必须是项目中存在的
NSValueTransformer
子类的名称。如果将字段留空,核心数据将使用NSCoding
对值进行编码。由于您希望对CLLocation
进行编码,并且CLLocation
实现了NSCoding
,因此应该将该文本字段留空。核心数据将调用NSCoding
方法将对象转换为NSData
,但根据文档,CLLocation
符合NSSecureCoding
,它继承自NSCoding
。啊,在扫描中错过了该方法:)我仍将存储原始值。