当我使用核心数据时,我有时会遇到一个问题 属性比只能有一组特定的可能值。作为一个 例如,假设您创建了一个bug跟踪器,并且您拥有一个实体 叫Bug。那么你可能想要一个属性 说明错误所在。让我们说可能的状态是开放的, 已结束且正在进行中。
到目前为止我所做的是我已经定义了类似的属性 字符串。通常我在用户中有一个组合框或一个无线电组 接口和可能的输入值已由什么定义 组合框或广播组提供的可能选择。
这种方法的一个问题是如果它不起作用 应用程序将其本地化为不同的语言。然后这个词 表示根据情况不同地存储状态 目前的语言。我需要用一种语言保存选择 独立的方式。
你会怎么做?
答案 0 :(得分:1)
正确的方法:
在数据模型编辑器中,为Integer 16
实体定义Bug
属性以保持三种状态。在Bug
课程中,这将是NSNumber
个对象。
此号码的实际显示字符串应由您的程序处理。为了整齐地封装这个逻辑,请将适当的方法添加到Bug.m
。例如:
-(NSString *)stateTitle {
NSString *title = NSLocalizedString(@"None", nil);
if ([self.state intValue]==1) return NSLocalizedString(@"Open", nil);
if ([self.state intValue]==2) return NSLocalizedString(@"Closed", nil);
if ([self.state intValue]==3) return NSLocalizedString(@"In Progress", nil);
return title;
}
现在,在您的UI类中,您只需使用[theBug stateTitle]
即可显示正确的本地化描述,例如在UILabel
中。