如何添加枚举到的境界模型? RLMObject?(How to add enums to rea

2019-09-27 15:30发布

这是我的serviceModel.h

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)

我知道我们可以作为附加属性类型这些 。 但我卡恩;找不到合适的方法来枚举添加到我的模型作为领域聚集在开始所有车型只所以做崩溃,由于此

@property OKServiceType *status;

我有崩溃的

错误错误域= NSCocoaErrorDomain代码= 3010“远程通知不在模拟器支持”

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

***终止应用程序由于未捕获的异常“RLMException”,原因:不兼容的类型“不能坚持房地产‘状态’。 添加到ignoredPropertyNames:方法忽略“。

任何帮助,将很多感激..

Answer 1:

也许你想给你的财产存储为NSInteger是支持的类型,并返回你的整数值类型的枚举的方法OKServiceType

@property NSInteger statusInt;

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

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


Answer 2:

另一种替代方法是设置枚举属性作为(只读)。 只读属性是由域自动忽略,然后就可以使用自定义的制定者。 例如:

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

@implementation ServiceModel

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

@end


文章来源: How to add enums to realm model? RLMObject?