我需要列出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]获取由实体类型定义的所有属性和关系的列表。您可以根据需要使用attributesByNamerelationshipsByName替换该方法。您可以进一步查询返回的对象,例如找出属性的类型或关系的目标实体。

关于ios - 如何列出NSManagedObject的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28301226/

10-13 04:02