2016-06-29 13 views
0

Я пытаюсь получить список свойства RLMObject программным образом:не class_copyPropertyList работа с RLMObject

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

но она возвращает нуль.

Это хорошо работает с нормальными классами, полученными из NSObject.

я поставил точку останова и обнаружил, что myRLMObject фактически структурирован

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

(«strName» и «Strid» являются свойствами I, определенными и хочет получить из списка.)

С нормальный класс, производный от NSObject, я получил это

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

Я думаю, что причина должна быть, что Realm добавил «RLMStandalone_MyRLMObject» вне классовой структуры и с aused class_copyPropertyList не работает.

Есть ли обходной путь для решения этой проблемы? Заранее спасибо.

+0

Вы можете уточнить, что вы пытаетесь достичь? 'class_copyPropertyList' получает только свойства, объявленные в этом конкретном классе, а не суперклассы. Если вы хотите знать все объявленные свойства, вы можете пройти иерархию наследования. Если по какой-то причине вы просто хотите узнать, какие свойства Realm управляют, вы можете использовать '- [RLMObject objectSchema]' для извлечения этой информации без восстановления в среду выполнения Objective-C. – bdash

ответ

1

Я думаю, проблема связана с тем, что RLMObject имеют динамические свойства, это значит, что они будут созданы и добавлены к каждому объекту во время выполнения, и вы не можете знать, когда это произойдет.

 Смежные вопросы

  • Нет связанных вопросов^_^