2015-12-22 9 views
1

Когда я запускаю следующий код на прошивке 8.4 и 9.2 я получаю объект NSData jsonData что 808 байт:IOS 9.2 авария с [[CJSONDeserializer десериализатора] deserializeAsDictionary:

NSData *jsonData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:urlString]]; 

Однако если бы я тогда кормить эту NSData объект в CJSONDeserializer. Я получаю сбой с iOS 9.2, но я получаю NSDictionary с iOS 8.4. например

NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:nil]; 

Примечание: на линии аварии объект NSData, по-видимому, изменяется - например, здесь:

- (id)deserializeAsDictionary:(NSData *)inData error:(NSError **)outError 
{ 
if ([self _setData:inData error:outError] == NO) 

inData составляет 808 байт прошивки 8.4, но выглядит следующим образом в прошивкой 9.2:

NSData

, который, из-за нечетный адрес, я предполагаю, что означает, что объект не является правильно (перезаписан, возможно?).

Я пытаюсь выяснить проблему без накладных расходов на App транспортной безопасности, поэтому я NSAppTransportSecurity устанавливается следующим образом:

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

Я также обновил CJSONDeserializer до последней версии.

Любые другие предложения, в чем проблема.

+1

Что является причиной, журнал аварии говорит? Я считаю, что результат не в правильном формате json. –

ответ

1

Попробуйте кормить объект ошибки

NSError *error = nil; 
NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];