Привет Я использую TouchJSON для десериализации некоторых JSON. Я использовал его в прошлом, и в тех случаях я имел дело с появлениями NSNull вручную. Я бы подумал, что автору тоже пришлось иметь дело с этим, так что я снова это делаю. Затем я нашел это в документации:
Избегайте значений NSNull на выходе.
NSData *theJSONData = /* some JSON data */
CJSONDeserializer *theDeserializer = [CJSONDeserializer deserializer];
theDeserializer.nullObject = NULL;
NSError *theError = nil;
id theObject = [theDeserializer deserialize:theJSONData error:&theError];}
То, как я понимаю, пользователь класса может передать нулевой указатель C-стиля в десериализатор, и когда он встретит NSNull, он вставляет переданные ему значения (NULL). Поэтому позже, когда я использую значения, я не получу NSNull, но NULL.
Это кажется странным, возвращаемое значение - это NSDictionary, который может содержать только объекты, а не значение по умолчанию вместо "nil"?
Если это NULL, я могу проверить значения, подобные этому?
if([jsonDataDict objectForKey:someKey] == NULL)
Казалось бы, более логично это сделать:
if(![jsonDataDict objectForKey:someKey])
Нет, чтобы упомянуть все случаи, когда передача nil разрешена, но передача NULL вызывает сбой.
Или я могу просто передать "ноль" в десериализатор?
Многое из этого проистекает из-за того, что я все еще борется с nil, NULL, [NSNULL null], возможно, я не вижу потенциальных оговорок при использовании nil.