我正在尝试以编程方式获取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无法正常工作。

有没有解决此问题的方法?提前致谢。

最佳答案

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

10-08 03:47