Лучший способ конвертировать NSStrings в перечисления - PullRequest
3 голосов
/ 02 ноября 2011

Допустим, у меня определено это перечисление (из UIKit-структуры Apple):

typedef enum {
    UITextAutocorrectionTypeDefault,
    UITextAutocorrectionTypeNo,
    UITextAutocorrectionTypeYes,
} UITextAutocorrectionType;

и у меня есть простая строка со значением "UITextAutocorrectionTypeDefault". В моем случае эта строка происходит из объекта JSON, но это не имеет значения.

Что было бы для меня лучшим способом преобразовать строку в правильное значение перечисления, чтобы я мог установить свойство в классе? Я знаю, что Obj-C не может просто преобразовать значение напрямую (как вы можете сделать с Java или C #), и в моем случае у меня есть много перечислений, которые могут быть созданы позже. Существуют ли какие-либо автоматические или полуавтоматические способы сделать это, кроме создания словаря сопоставления вручную?

1 Ответ

2 голосов
/ 02 ноября 2011

В C (читай Objective-C) нет другого способа сделать это, кроме сопоставления значений вручную.Перечисление просто определяет значения констант, которые не могут быть преобразованы в или из строки во время выполнения, как они могут в C# или Java, которая обрабатывает их как объекты.

Вы можете, как угодно stringify значения во время компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...