我正在尝试将CLLocation对象存储在核心数据中。我设置核心数据NSKeyedUnarchiveFromDataTransformerName:
但是当我创建我的NSEntityDescription来添加对象时:
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'
你们中的任何人都知道我做错了什么或为什么我会得到错误?或者如何解决这个问题?
我真的很感谢你的帮助
答案 0 :(得分:3)
它告诉你问题是什么。您将模型配置为使用名为NSKeyedUnarchiveFromDataTransformerName
的类作为值转换器,但没有具有该名称的类。
您在其中输入的字符串必须是项目中存在的NSValueTransformer
子类的名称。如果将该字段留空,Core Data将使用NSCoding
对值进行编码。由于您希望对CLLocation
进行编码,并且CLLocation
实现NSCoding
,因此您应该将该文本字段留空。核心数据将调用NSCoding
方法将对象转换为NSData
。
答案 1 :(得分:-1)
CLLocation
未实现NSCoding
协议,因此无法像这样进行转换。
我建议将核心数据存储在核心数据中,然后根据需要从数据中创建CLLocation
个实例。