0

我正在尝试像这样以编程方式获取 RLMObject 的属性列表:

MyRLMObject *myRLMObject = [[MyRLMObject alloc] init];
unsigned int count;
objc_property_t *properties = class_copyPropertyList([myRLMObject class], &count);

但它返回null。

这适用于从 NSObject 派生的普通类。

我放了一个断点,发现 myRLMObject 实际上的结构是

  (RLMStandalone_MyRLMObject *) 0x12c5c9cf0
    MyRLMObject
      RLMObject
      _strName = (NSString *) nil
      _strId = (NSString *) nil

(“strName”和“strId”是我定义的并且想从列表中获取的属性。)

使用从 NSObject 派生的普通类,我得到了这个

  (MyNSObject *) 0x12c5cab40
    NSObject
    _strName = (NSString *) nil
    _strId = (NSString *) nil

我认为原因应该是Realm在类结构之外添加了一个“RLMStandalone_MyRLMObject”,导致class_copyPropertyList无法工作。

这个问题有什么解决方法吗?提前致谢。

4

1 回答 1

1

我认为问题在于RLMObject具有动态属性,这意味着它们将在运行时创建并添加到每个对象中,并且您不知道它何时会发生。

于 2016-06-29T18:49:41.610 回答