2017-06-12 12 views
1

これは私たちがTheseとしてプロパティタイプを追加することができます知っている私のserviceModel.h領域モデルにenumを追加するには? RLMObject?

typedef NS_ENUM(NSInteger, OKServiceType) { 
    OKServiceTypePending = 0, 
    OKServiceTypeAccepted , 
    OKServiceTypeStarted, 
    OKServiceTypeCompleted, 
    OKServiceTypeClosed, 
    OKServiceTypeCancelled 
}; 
@interface serviceModel : RLMObject 
@property NSString *job_id; 
@property NSString *job_service_id; 
@property NSString *service_id; 
@property NSString *vendor_id; 
@property NSString *timeslot; 
@property NSString *points; 
@property OKServiceType *status; 
@property NSString *service_name; 
@property NSString *image_url; 
@property NSString *vendor_name; 
@property NSString *subservice_desc; 
@property NSString *subservice_id; 
@property NSString *display_datetime; 
@property NSString *status_text; 
@end 

RLM_ARRAY_TYPE(serviceModel) 

です。しかし、私はキャン;レルムが起動時にすべてのモデルを収集して、それがクラッシュを行うだけなのでtが原因この

@property OKServiceType *status; 

私は

エラーとしてクラッシュを持っていますし、私のモデルに列挙型を追加するための適切な方法を見つけますエラードメイン= NSCocoaErrorDomainコード= 3010 2017年6月12日15 {遠隔通知が シミュレータでサポートされていない= NSLocalizedDescription}

のUserInfo = "リモート通知がシミュレータでサポートされていない":20:41.049のAppName [9974を: 157085]

***キャッチされていない例外 'RLMException'のためにアプリケーションを終了しています。理由: 'ステータス'が互換性のないタイプで維持できません。 Add to ignoredPropertyNames:無視するメソッドです。 '

すべてのヘルプはたくさんいただければ幸いです。..

+0

モデルのプロパティ名からポインタを削除するだけです: '@property OKServiceType status;'これが必要です。 – Orlando

答えて

2

はたぶん、あなたは、サポートされているタイプですNSIntegerとしてあなたの財産を保存し、タイプOKServiceTypeの列挙型として、あなたの整数値を返すメソッドを作成したいです。

@property NSInteger statusInt; 

- (OKServiceType)status { 
    return (OKServiceType)statusInt 
} 

- (void)setStatus(OKServiceType)status { 
    self.statusInt = status 
} 
+0

しかし、追加された列挙型は、サポートされている型のnsinteger型です。 –

+0

同じ問題が発生したときに思いついたのとまったく同じです。しかし、realmのプロパティチェックでは現時点でこれを取得していないので、これはとにかくenumを使用する小さな回避策になります。 –

+0

そのenumチェックを迅速に与える.. .. –

0

また、(readonly)としてenumプロパティを設定することもできます。読み取り専用プロパティはRealmによって自動的に無視され、カスタムセッターを使用できます。例:

@property (readonly) OKServiceType *status; 
@property NSInteger statusInt; 

@implementation ServiceModel 

- (OKServiceType)status { 
    return (OKServiceType)_statusInt; 
} 

@end 
関連する問題