我正在尝试以编程方式获取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
具有动态属性,这意味着它们将在运行时创建并添加到每个对象,并且您不知道何时会发生。