2009-09-19 3 views
1

Я строю модель Core Data, и один из моих классов должен иметь переменную, которая лучше всего может быть реализована как typedef. Сейчас я реализую его как строковую переменную, которая принимает три возможных значения, но, конечно, это не является надежным.typedef как базовый тип данных

Есть ли способ реализовать это в модели Core Data?

ответ

1

Недавно я рассмотрел использование enum typedef и сохранил его как NSNumber в Core Data. Я применил свой собственный подкласс NSManagedObject и создал свойство для моего типа. В аксессорах конвертировал и из NSNumber:

- (MyTypedef)type { 
    NSNumber *value = [self primitiveValueForKey:@"type"]; 
    return [value integerValue]; 
} 

- (void)setType:(MyTypedef)aType { 
    NSNumber *value = [NSNumber numberWithInteger:aType]; 
    [self setPrimitiveValue:value forKey:@"type"]; 
} 

В конце концов, я не пошел с этим решением, но тогда она работала хорошо для меня (на iPhone). Не уверен, что приведенный выше код абсолютно прав - я просто ввел его в это окно браузера.

Возможно, требуется больше работы, если вы хотите использовать KVO и т. Д., И вы можете сделать некоторую проверку ошибок в методе доступа, чтобы проверить, действительно ли то, что вы возвращаете в NSNumber, действительно действительным в перечислении.

1

У вас может быть атрибут integer и transcient атрибут неопределенного типа, который инициализируется в зависимости от значения целочисленного атрибута?

Смежные вопросы