Укажите допустимые значения для атрибута Core Data - PullRequest
1 голос
/ 19 августа 2011

Когда я использую Базовые Данные, я иногда нахожусь в ситуации, когда у меня есть атрибут, который может иметь только определенный набор возможных значений.В качестве примера скажем, что вы делаете трекер ошибок и у вас есть сущность с именем Bug.Тогда возможно, что вам понадобится атрибут для состояния, в котором находится ошибка. Допустим, что возможными состояниями являются «Открыто», «Закрыто» и «В процессе».

Что я сделал до сих пор, так это то, что у меня есть атрибутыкак это определено как строки.Обычно в пользовательском интерфейсе есть поле со списком или группа радиосвязи, и возможные входные значения определяются тем, какие варианты выбора предлагает поле со списком или группа радиосвязи.

Одна из проблем этого подходав том, что он не работает, если приложение локализовано на другой язык.Тогда слово, которое указывает состояние, сохраняется по-разному в зависимости от текущего языка.Мне нужно сохранить выделение независимо от языка.

Как бы вы это сделали?

1 Ответ

1 голос
/ 21 августа 2011

Правильный способ сделать это:

В редакторе модели данных определите свойство 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;
}

Теперь в ваших классах пользовательского интерфейса вы можете просто использовать [theBug stateTitle], чтобы отобразить правильное локализованное описание, например, в UILabel.

...