Легче? Возможно нет. Более кратко? Не тогда, когда вы спросили, а в современном (по крайней мере, с 2015 года) Obj-C, да. Если ваш объект представляет собой словарь со строковыми или числовыми значениями (NSDictionary<id, StringOrNumber>
) любого рода, вы можете использовать:
BOOL value = @(managedObject[@"fieldName"]).boolValue;
Обратите внимание, что также, если вы знаете, что значение, полученное из @"fieldName"
, равно NSNumber
, вы можете просто пропустить преобразование:
BOOL value = [managedObject[@"fieldName"] boolValue];
Почему?
Благодаря некоторым изменениям в компиляторе LLVM:
NSDictionary
теперь можно читать и записывать с использованием знакомого синтаксиса dictionary[key]
- Совместимые значения можно преобразовать в
NSNumber
с использованием синтаксиса @(value)
. 1024 * более *
- Все свойства (и методы, которые принимают нулевые аргументы и возвращают значение) могут быть доступны с использованием точечного синтаксиса:
object.property
и object.method
.
Сейчас много хорошего синтаксического сахара. Я рекомендую вам взглянуть на это!