Ios 如何将枚举添加到领域模型?雷姆宾特?
这是我的服务模型Ios 如何将枚举添加到领域模型?雷姆宾特?,ios,objective-c,enums,crash,realm,Ios,Objective C,Enums,Crash,Realm,这是我的服务模型 typedef NS_ENUM(NSInteger, OKServiceType) { OKServiceTypePending = 0, OKServiceTypeAccepted , OKServiceTypeStarted, OKServiceTypeCompleted, OKServiceTypeClosed, OKServiceTypeCancelled }; @interface serviceModel : RLMO
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)
我知道我们可以将属性类型添加为。但我不能;我找不到正确的方法将枚举添加到我的模型中,因为realm仅在开始时收集所有模型,所以它会因此崩溃
@property OKServiceType *status;
我现在有点崩溃
Error Error Domain=NSCOCAERRORDOMAIN Code=3010“模拟器中不支持远程通知”
UserInfo={NSLocalizedDescription=不支持远程通知
在模拟器中支持}2017-06-12 15:20:41.049 AppName[9974:157085]
***由于未捕获的异常“RLMException”,正在终止应用程序,原因:“无法使用不兼容的类型保留属性“status”。加上
ignoredPropertyNames:要忽略的方法。'
任何帮助都将不胜感激 您可能希望将属性存储为受支持的类型
NSInteger
,并创建一个方法,将整数值作为OKServiceType
类型的枚举返回
@property NSInteger statusInt;
- (OKServiceType)status {
return (OKServiceType)statusInt
}
- (void)setStatus(OKServiceType)status {
self.statusInt = status
}
另一种选择是将枚举属性设置为(只读)。只读属性被领域自动忽略,然后您可以使用自定义设置器。例如:
@property (readonly) OKServiceType *status;
@property NSInteger statusInt;
@implementation ServiceModel
- (OKServiceType)status {
return (OKServiceType)_statusInt;
}
@end
但是添加的枚举不是nsinteger类型吗?我想这是一种受支持的类型。这正是我遇到同样问题时的想法。但是领域中的属性检查目前还没有得到这一点,因此这将是一个使用枚举的小解决方案。它将在swift中进行枚举检查,但是..:(只需从模型上的属性名称中删除指针:
@property-OKServiceType-status;
这样就可以了。