2012-09-05 62 views
0

我试图访问一个像这样的变形芯数据对象的属性:核心数据可转换属性

MainObject *localObject = [self.myArray objectAtIndex:indexPath.row]; 
TransformableObject *actualObject = localObject.transformableObject; 

这工作得很好。我NSLogactualObject并得到正确的键/值对:

actualObject:{ 

    property = "Foo"; 
    property2 = "Apple"; 
} 

然而,当我我尝试:

NSLog (@"property:%@",actualObject.property)我得到-[__NSCFDictionary property]: unrecognized selector sent to instance

我在做什么错?在我的核心数据类,我有:

@interface MainObject : NSManagedObject 

@property (nonatomic, retain) TransformableObjectClass *transformableObject; 

编辑: 下面是如何设置的对象在核心数据

 MainObject *event = (MainObject *)[NSEntityDescription insertNewObjectForEntityForName:@"MainObject" inManagedObjectContext:[AppDelegateMy managedObjectContext]]; 
     [event setValuesForKeysWithDictionary:[myArrray objectAtIndex:i]]; 
+0

最初如何设置'localObject.transformableObject'的值?在您的模型中如何配置属性? 'actualObject'显然是一个'NSDictionary',但是你没有给我们足够的信息来推论为什么。 –

+0

TransformableObjectClass是另一个Core Data NSManagedObject类。 – Eric

+0

可能是这样,但错误显示实际分配给该属性的实例是'NSDictionary'的实例。那么,它是如何到达那里的? –

回答

1

无论-setValuesForKeysWithDictionary:也不核心数据是足够神奇,使这项工作没有一些更你的努力。现在,您只需将JSON响应中的字典分配给新的托管对象的transformableObject属性即可。如果你试图保存你的上下文,我的猜测是它可能会失败。如果你想让这些字典变成实际的TransformableObjectClass实例,你需要自己做。

如果您的应用中有很多类似的东西,您可能需要查看RestKit或其他开源JSON到对象映射库(如ClassMapper)之一。

+0

它可以很好地保存,以及为什么我可以访问上面的actualObject作为NSManagedObject的属性,如果-setValuesForKeysWithDictionary不工作? – Eric

+1

它工作正常。它只是没有做你的想法。在Objective-C中,指针类型比描述性更具描述性。如果你把一个字典放到那个属性中而不是你声明的那个类中,运行时就不会抱怨。但是,如果您尝试向该字典发送不支持的消息,它会崩溃。就像你看到的一样。 –

+0

你可以发布模型配置的屏幕截图吗?特别是有问题的属性的属性? –