在Swift中将NSmanagedObject转换为NSDictionary

在Swift中将NSmanagedObject转换为NSDictionary,swift,nsdictionary,nsmanagedobject,Swift,Nsdictionary,Nsmanagedobject,使用MultipeerConnectivity时,我需要通过discoveryInfo将NSDictionary传递到另一台设备。我的所有数据都作为ManagedObjects保存在CoreData中 我有一个Person实体,它有几个房屋作为属性 如何将这样的ManagedObject转换为使用Swift语言的NSDictionary 我看到有人在使用这个Objective c代码,但我自己我不熟悉Objective c,所以我不知道这是否是正确的方法 NSArray *keys = [[[m

使用MultipeerConnectivity时,我需要通过discoveryInfo将
NSDictionary
传递到另一台设备。我的所有数据都作为ManagedObjects保存在CoreData中

我有一个Person实体,它有几个房屋作为属性

如何将这样的
ManagedObject
转换为使用Swift语言的
NSDictionary

我看到有人在使用这个Objective c代码,但我自己我不熟悉Objective c,所以我不知道这是否是正确的方法

NSArray *keys = [[[myObject entity] attributesByName] allKeys];

NSDictionary *dict = [myObject dictionaryWithValuesForKeys:keys];
当您想要恢复它时,您可以如下设置managedObject的值:

[myObject setValuesForKeysWithDictionary:dict];
我正在努力学习理解目标c,也许您可以确认这是否是Swift中的正确代码,以及实现目标的正确方式:

var keys:NSArray = myObject.entity.attributesByName.allKeys
var dict:NSDictionary = myObject.dictionaryWithValuesForKeys(keys)
myObject.setValuesForKeysWithDictionary(dict)

你试过密码了吗?它编译吗?它是否产生了预期的结果?如果不是,您会得到什么?是的,有三个错误:NSArray'不能隐式转换为'[AnyObject]';您的意思是使用“as”来显式转换吗NSDictionary“不能隐式转换为“[NSObject:AnyObject]”;您的意思是使用“as”来显式转换吗?[NSObject:AnyObject]”没有名为“allKeys”的成员这可能有帮助: