【问题标题】: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

    【讨论】:

      猜你喜欢
      • 2010-11-25
      • 2012-08-01
      • 1970-01-01
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 2012-03-02
      相关资源
      最近更新 更多