2017-06-12 55 views
1

這是我serviceModel.h如何將枚舉添加到領域模型? 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) 

我知道我們可以爲These添加屬性類型。但我卡恩;找不到合適的方法來枚舉添加到我的模型作爲領域聚集在開始的所有車型只有那麼它來做碰撞,由於這種

@property OKServiceType *status; 

我有崩潰的

錯誤誤差區域= NSCocoaErrorDomain代碼= 3010

的UserInfo = {NSLocalizedDescription =遠程通知不 在模擬器支持} 2017年6月12日15 「遠程通知不在模擬器支持」:20:41.049 AppName的[9974: 157085]

***由於未捕獲的異常「RLMException」而終止應用程序,原因:'不能持續保留屬性'狀態'與不兼容的類型。添加到 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

這正是我想當我有同樣的問題。但目前在領域的財產檢查並沒有得到此,所以這將是一個小的解決方法,無論如何使用枚舉。 –

+0

其給予enum check in swift可是.. :( –

0

另一種替代方法是將enum屬性設置爲(只讀)。 Realm會自動忽略只讀屬性,然後您可以使用自定義設置器。例如:

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

@implementation ServiceModel 

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

@end