我需要列出NSManagedObject的变量,我知道有一种使用How do I list all fields of an object in Objective-C?中给出的“class_copyIvarList”的方法
但是“class_copyIvarList”不适用于“NSManagedObject”。
这是Im正在使用的一段代码,对于“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]
获取由实体类型定义的所有属性和关系的列表。您可以根据需要使用attributesByName
或relationshipsByName
替换该方法。您可以进一步查询返回的对象,例如找出属性的类型或关系的目标实体。
关于ios - 如何列出NSManagedObject的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28301226/