2016-02-02 5 views
0

Я использую JSONModel в своем приложении. Можно ли подготовить категорию с JSONValueTransformer, которая преобразует nil/null NSString в пустую строку (@ ""). До сих пор, когда свойство в ответе json равно null, мое свойство в объекте становится @ ".JsonModel NSString преобразование null в пустую строку

Поскольку весь API не очень хорошо (он является внешним), я бы хотел избежать переопределения initWithDictionary в каждом объекте и использовать только ValueTransformer для каждого класса JSONModel с свойством NSString и сопоставить его, чтобы исправить строку или пустую строку, если nil/null ,

+0

Вместо преобразования ответа API из 'NSNull' в пустые '@" "' почему вы просто не обрабатываете случай «nil» в своем приложении? Работа с 'nil' не является чем-то новым в Obj-C. Мне кажется, что API, который возвращает' NSNull', когда свойство string не имеет значения, - это правильная вещь. – Aaron

+0

Прежде всего я пытался сделать это со стороны ValueTransformer в качестве образовательной проблемы - проверить возможности этого подхода. Для работы с ним в приложении потребуется проверить [NSString isNotNullOrEmpty] в каждой отдельной метке. Я настройки в приложении с данными из api и верю мне, что это приложение действительно огромно. Итак, вопрос: возможно ли выше проблема, или вы знаете, как лучше всего обращаться с ним в целом приложении, не обращаясь так много случаев if()? –

+0

Да, конечно, его можно поместить в категорию «NSDictionary» или «ValueTransformer», которая отфильтровывает «NSNull» и заменяет их на «@» «. – Aaron

ответ

0

После получения ответа запустите следующий цикл с вашим словарем ответа и его ключом.

for (id dictionary in [[responseDictionary valueForKey:@"responseKey"] allKeys]) 
    { 
      ([[responseDictionary valueForKey:@"responseKey"] valueForKey:dictionary] == [NSNull null]) ? [[responseDictionary valueForKey:@"responseKey"] setValue:@"" forKey:dictionary] :[[responseDictionary valueForKey:@"responseKey"] setValue:[[responseDictionary valueForKey:@"responseKey"] valueForKey:dictionary] forKey:dictionary]; 
    } 
Смежные вопросы