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 に答える