如何列出 NSManagedObject 的变量

How to list variables for NSManagedObject

我需要列出 NSManagedObject 的变量,我知道有一种方法可以使用 "class_copyIvarList" 来完成,如 How do I list all fields of an object in Objective-C?

但是 "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 替换该方法。您返回的对象可以进一步查询,例如找出 属性 的类型或关系的目标实体。