为Core Data属性指定有效值

时间:2011-08-19 13:59:14

标签: objective-c xcode cocoa-touch cocoa core-data

当我使用核心数据时,我有时会遇到一个问题 属性比只能有一组特定的可能值。作为一个 例如,假设您创建了一个bug跟踪器,并且您拥有一个实体 叫Bug。那么你可能想要一个属性 说明错误所在。让我们说可能的状态是开放的, 已结束且正在进行中。

到目前为止我所做的是我已经定义了类似的属性 字符串。通常我在用户中有一个组合框或一个无线电组 接口和可能的输入值已由什么定义 组合框或广播组提供的可能选择。

这种方法的一个问题是如果它不起作用 应用程序将其本地化为不同的语言。然后这个词 表示根据情况不同地存储状态 目前的语言。我需要用一种语言保存选择 独立的方式。

你会怎么做?

1 个答案:

答案 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中。