Cocoa 从NSArrayController访问核心数据实体名称-arrangedObjects

Cocoa 从NSArrayController访问核心数据实体名称-arrangedObjects,cocoa,core-data,nsmanagedobject,nsarraycontroller,nsentitydescription,Cocoa,Core Data,Nsmanagedobject,Nsarraycontroller,Nsentitydescription,给定一个绑定到IB中moc的NSArrayController“objController”,下面的工作不应该正常吗?考虑到它似乎不起作用,我如何从我的NSArrayController中检索实体的名称 for (NSManagedObject *thisObj in [objController arrangedObjects]) { NSEntityDescription *description = [thisObj entity]; NSString *entityNa

给定一个绑定到IB中moc的
NSArrayController
“objController”,下面的工作不应该正常吗?考虑到它似乎不起作用,我如何从我的
NSArrayController
中检索实体的名称

for (NSManagedObject *thisObj in [objController arrangedObjects]) 
{
    NSEntityDescription *description = [thisObj entity];
    NSString *entityName = [description name];
    // do something with entityName...
    NSString *entityAttributeValue = [thisObj valueForKey:@"attributeKey"];
    // do something with entityAttributeValue...
}
“objController”是ibed,并设置为“实体名称”模式,实体名称设置为模型中定义的实体。这个实体确实有子实体(因此我想访问它的描述名称,因为
NSArrayController
可以存储许多不同的子实体类型),但是子实体的存在似乎并没有什么不同


。。。在调试器中,“description”似乎是一个有效的
NSEntityDescription
对象,但“entityName”被设置为一个
\PFEncodedString
对象,没有任何内容。然而,“entityAttributeValue”很好,用存储在核心数据中的正确值填充

我想,解决这个问题的一种方法是自定义所有CD实体的类,然后使用-
isKindOfClass
获取我需要的信息


有什么想法吗?

\u PFEncodedString
NSString
的(私有)具体子类,因此可以用作任何其他
NSString
\u PFEncodedString
NSString
的(内部)子类。“entityName没有内容”是什么意思?我意识到
\PFEncodedString
是内部的-我的意思是调试器不会在该位置显示任何解释的字符串,就像我在其他一些项目中看到的那样。一个有文档记录的方法会返回一个
\PFEncodedString
,这有点神秘……不,这很正常。例如
NSString*s=@“123”产生一个
\uu NSCFConstantString
-但是调试器中的“po entityName”应该显示字符串!你当然是对的。好吧,这个挠头的地方有点像掌心。调试器变量视图没有向我显示该对象的解释字符串,这是一种欺骗,但我试图在实体名称上调用
-UTF8String
,并将其直接传递到char*c函数中,这是一种愚蠢的行为。答案是用
[[managedObject entity]name]
的内容分配给init一个新字符串。马丁,谢谢你的帮助。你不必创建新字符串
[description name]
返回一个
NSString
子类的n个实例,可以与任何其他字符串一样使用。谢谢-我想为搜索google的任何人补充一点,Xcode的变量视图并不总是正确解释某些对象的内容,因此,建议在so上发布愚蠢的问题之前使用交互式调试器控制台;)