如何列出NSManagedObject的变量

我需要列出NSManagedObject的变量,我知道有一种方法可以使用“ 如何列出Objective-C中对象的所有字段 ”中给出的“class_copyIvarList”来实现它。

但是“class_copyIvarList”不能处理“NSManagedObject”。

这是我使用的一段代码,它对“NSObject”工作得非常好,但对于“NSManagedObject”则不行:

unsigned int outCount; Ivar *vars = class_copyIvarList([self class], &outCount); for (int i = 0; i < outCount; i++) { Ivar var = vars[i]; unsigned int idCount; NSLog(@"%s %s", ivar_getName(var), ivar_getTypeEncoding(var)); } free(vars); 

这有什么问题?

我不确定你在这里做了什么,但是对于托管对象,通常更常见的是使用Core Data自己的内省而不是询问Objective-C运行时。 在托管对象子类的方法中,您将使用[[self entity] propertiesByName]来获取由实体类型定义的所有属性和关系的列表。 您可以使用attributesByNamerelationshipsByName替换该方法,具体取决于您的需要。 可以进一步查询您获取的对象,例如查找属性的类型或关系的目标实体。