2017-06-12 50 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