NSKeyedUnarchiver file incomprensible

Estoy teniendo un queuepso extraño que sucede cebada alguna vez y me pregunto si podría deberse a que se corrompen los datos corruptos. Tengo este error que ocurre:

-[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive > # Binary Image Name Address Symbol 0 CoreFoundation 0x3357b2a3 __exceptionPreprocess > 1 libobjc.A.dylib 0x3b3df97f objc_exception_throw > 2 CoreFoundation 0x3357b1c5 -[NSException initWithCoder:] > 3 Foundation 0x33e124ef -[NSKeyedUnarchiver initForReadingWithData:] > 4 Foundation 0x33e73537 +[NSKeyedUnarchiver unarchiveObjectWithFile:] 

Mi código está bien y esto sucedió una vez en mi aplicación, pero me pregunto si los datos corruptos son una razón viable para que esto ocurra. y si es así, ¿hay alguna forma de lidiar con datos corruptos?

Puede envolver parte del código en @try @catch construction para evaluar la exception y evitar un locking. Aquí hay un ejemplo:

 - (UIImage*) loadImageFromCacheWithFilePath: (NSString*) somePath { UIImage* image = nil; @try { image = [NSKeyedUnarchiver unarchiveObjectWithFile:somePath]; } @catch (NSException* exception) { // Surpress any unarchiving exceptions and continue with nil NSLog(@"Load image from cache was failed with exception: %@", [exception reason]); } return image; //This will return nil if exception caught } 

¿Sigues experimentando este problema? Parece que estás tratando de desarchivar un file json. Intente desarchivar sus datos con NSJSONSerialization.

Aquí hay un pequeño código de muestra:

  NSError * serializationError = nil; NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&serializationError]; if(serializationError == nil && jsonArray != nil) { NSLog(@"%@", jsonArray); }