【问题标题】:How to add enums to realm model? RLMObject?如何将枚举添加到领域模型? RLM 对象?
【发布时间】:2017-11-13 18:21:22
【问题描述】:

这是我的 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)

我知道我们可以将属性类型添加为These。但是我找不到将枚举添加到我的模型的正确方法,因为领域仅在启动时收集所有模型,因此它会因此而崩溃

@property OKServiceType *status;

我正在崩溃

Error Error Domain=NSCocoaErrorDomain Code=3010 "模拟器不支持远程通知"

UserInfo={NSLocalizedDescription=远程通知不是 模拟器支持} 2017-06-12 15:20:41.049 AppName[9974:157085]

*** 由于未捕获的异常“RLMException”而终止应用程序,原因:“无法使用不兼容的类型保留属性“状态”。添加 ignorePropertyNames:要忽略的方法。'

任何帮助将不胜感激..

【问题讨论】:

  • 只需从模型上的属性名称中删除指针:@property OKServiceType status; 这应该可以。

标签: ios objective-c enums crash realm


【解决方案1】:

也许您想将您的属性存储为NSInteger,这是一种受支持的类型,并创建一个将您的整数值作为OKServiceType 类型的枚举返回的方法。

@property NSInteger statusInt;

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

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

【讨论】:

  • 但添加的枚举不是 nsinteger 类型,我猜这是受支持的类型..
  • 这正是我遇到同样问题时的想法。但是目前在领域中的属性检查没有得到这个,所以无论如何这将是一个使用枚举的小解决方法。
  • 它可以快速进行枚举检查,但是.. :(
【解决方案2】:

另一种选择是将枚举属性设置为(只读)。 Realm 会自动忽略只读属性,然后您可以使用自定义设置器。例如:

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

@implementation ServiceModel

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

@end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多