【问题标题】:Specify valid values for a Core Data attribute为核心数据属性指定有效值
【发布时间】:2023-03-23 16:53:02
【问题描述】:
当我使用 Core Data 时,我有时会遇到以下情况:
属性只能有一组特定的可能值。作为一个
例如,假设您制作了一个错误跟踪器并且您有一个实体
称为虫。那么你可能想要一个属性
声明错误所在。假设可能的状态是开放的,
已关闭并正在进行中。
到目前为止,我所做的是我已经将属性定义为
字符串。通常我在用户中有一个组合框或一个单选组
接口和可能的输入值已由
组合框或单选组提供的可能选择。
这种方法的一个问题是,如果
应用程序将其本地化为不同的语言。然后这个词
这表明状态的存储方式取决于
当前语言。我需要用一种语言保存选择
独立的方式。
你会怎么做?
【问题讨论】:
标签:
objective-c
xcode
cocoa-touch
cocoa
core-data
【解决方案1】:
正确的做法:
在数据模型编辑器中,为您的 Bug 实体定义一个 Integer 16 属性以保持这三种状态。在您的 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。