问题描述
|
我有一个自定义类,它是
NSManagedobject
的子类。我想将其存储在字典中,但尝试这样做时会收到receive1ѭ错误。
这是我尝试创建字典的方法:
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
听起来像是您尝试将ѭ0write写入文件系统。哪一个不起作用,因为NSManagedObjects
不确定to11ѭ。
您可以将NSManagedObject的属性保存在NSDictionary中,然后将此字典保存到文件中。
NSArray *keys = [[[myObject entity] attributesByName] allKeys];
NSDictionary *dict = [myObject dictionaryWithValuesForKeys:keys];
而当您想还原它时,可以像下面这样设置managedObject的值:
[myObject setValuesForKeysWithDictionary:dict];
,在我的应用程序中,我还将MO \存储在字典中(但没有保留,我存储在数组中)但没有任何强制转换。如果数组也发生这种情况,请尝试。
您可以尝试先创建字典,然后再分配对象。
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setValue:managedObject forKey:@\"thisOne\"];
,快速版本,以防有人需要
import CoreData
extension NSManagedObject {
func toDict() -> [String:Any] {
let keys = Array(entity.attributesByName.keys)
return dictionaryWithValues(forKeys:keys)
}
}