Содержимое UIDocument loadFromContents повреждено EXC_BAD_ACCESS?

У меня была эта проблема в течение нескольких дней, пытаясь ее решить, без везения.

У меня есть UIDocument, который синхронизируется через iCloud. Вот методы

- (id)contentsForType:(NSString *)typeName error:(NSError *__autoreleasing *)outError { NSMutableData *data = [NSMutableData data]; NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; [archiver encodeObject:name forKey:@"name"]; [archiver encodeObject:note forKey:@"note"]; [archiver finishEncoding]; return data; } - (BOOL)loadFromContents:(NSData *)contents ofType:(NSString *)typeName error:(NSError *__autoreleasing *)outError { NSLog(@"%@", [contents bytes]); NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:contents]; name = [unarchiver decodeObjectForKey:@"name"]; note = [unarchiver decodeObjectForKey:@"note"]; [unarchiver finishDecoding]; return YES; } 

Как вы можете видеть, я делаю NSLog по содержанию, большую часть времени все в порядке. И он загружается должным образом, однако, когда данные повреждены, я получаю EXC_BAD_ACCESS, даже просто делая NSLog.

Как-то данные в контейнере ubiquity становятся поврежденными, однако они не распространяются на другие устройства, все остальные устройства будут загружать контент в порядке. Удаление приложения с устройства не исправляет его. Только если я сохраняю документ на другом устройстве, он работает. Я использую ARC, так что это не должно быть проблемой. Я проверил NSURLUbiquitousItemIsDownloadedKey, который возвращает true.

Очевидно, я хочу выяснить, что является причиной коррупции в первую очередь, но как я могу узнать, недействительны ли данные, чтобы приложение не разбилось?

Давайте будем гением компьютера.