2016-06-29 81 views
0

工作,我想獲得一個RLMObject財產清單編程方式是這樣的:class_copyPropertyList不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 

我想原因應該是該領域增加了一個「RLMStandalone_MyRLMObject」階級結構和C外aused class_copyPropertyList無法正常工作。

有沒有解決這個問題的方法?提前致謝。

+0

你能澄清你想達到的目標嗎? 'class_copyPropertyList'只能檢索在特定類中聲明的屬性,而不是任何超類。如果您想知道所有聲明的屬性,則可以遍歷繼承層次結構。如果由於某種原因,您只想知道Realm正在管理哪些屬性,則可以使用' - [RLMObject objectSchema]'檢索該信息,而無需還原到Objective-C運行時。 – bdash

回答

1

我認爲問題是因爲RLMObject具有動態屬性,這意味着它們將被創建並添加到運行時的每個對象,並且您無法知道它何時會發生。

相關問題