[英]Storing NSManagedObject in a dictionary (NSDictionary)
我有一个自定义类,它是NSManagedObject
的子NSManagedObject
。 我想将它存储在字典中,但是当我尝试这样做时,我收到一个Property list invalid for format: 200
的Property list invalid for format: 200
错误。
以下是我尝试创建字典的方法:
NSDictionary *dictionary =
[NSDictionary dictionaryWithObject: voiceMemo forKey:@"voiceMemo"];
尝试时结果相同
NSDictionary *dictionary =
[NSDictionary dictionaryWithObject: (NSData *) voiceMemo forKey:@"voiceMemo"];
但是,在尝试单独保存各个属性时,它可以正常工作:
NSDictionary *dictionary =
[NSDictionary dictionaryWithObject: voiceMemo.attribute forKey:@"attribute"];
NSDictionary
应该能够存储数据对象,所以我猜,真正的问题是如何将NSManagedObject
对象转换为NSData
您确定在创建字典时发生了错误,就像您发布的代码所暗示的那样吗?
Property list invalid for format: 200
听起来像您尝试将NSManagedObject
写入文件系统。 哪个不起作用,因为NSManagedObjects
不确认NSCoding
。
您可以在NSDictionary中保存NSManagedObject的属性,并将此字典保存到文件中。
NSArray *keys = [[[myObject entity] attributesByName] allKeys];
NSDictionary *dict = [myObject dictionaryWithValuesForKeys:keys];
当你想要恢复它时,你可以像这样设置managedObject的值:
[myObject setValuesForKeysWithDictionary:dict];
一个快速版本,以防任何人需要它
import CoreData
extension NSManagedObject {
func toDict() -> [String:Any] {
let keys = Array(entity.attributesByName.keys)
return dictionaryWithValues(forKeys:keys)
}
}
在我的应用程序中,我也将MO存储在字典中(但没有保留,我存储在数组中)但没有任何演员。 请尝试,如果这也发生在阵列上。
您可以先尝试创建字典,然后再分配对象。
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setValue:managedObject forKey:@"thisOne"];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.