Я делаю простую программу, которая может архивировать мой объект и разблокировать его при запуске.Как бороться с unarchiver с этой ситуацией ..?
У меня есть lists.m где изменяемый массив под названием favouritesList ПОЛУЧИТЬ магазин в файл, используя архив. Внутри списка, у меня есть простой объект, называемого favouriteItem
Таким образом, проблема происходит с этим кодом
-(void) loadList
{
self.favouritesList =
[[NSKeyedUnarchiver unarchiveObjectWithFile:self.fileName] mutableCopy];
if(self.favouritesList == nil)
self.favouritesList = [[NSMutableArray alloc]init];
}
Исключения, у меня есть это [NSKeyedUnarchiver initForReadingWithData]: непонятный архив (0x62, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x30, 0x30)»
я знаю, что я разархивировав с файлом, который пуст (на самом деле он копируется из файла из пучка, который также является пустым).
Итак, как я могу избежать этого, когда все еще хочу, чтобы мое приложение загружало данные из файла при запуске. Когда я использовал в качестве следующего кода
-(void) loadData {
self.URLLists = [NSMutableArray arrayWithContentsOfFile:self.path];
if(self.URLLists == nil) {
self.URLLists = [[NSMutableArray alloc]init];
}
}
Здесь, даже если файл на self.path был пуст, он вернется нолем, и я могу только сказать , если он возвращается ноль, я назначу новую для первый раз. Но, с NSkeyedUnarchiver это работает по-другому. Не могли бы вы объяснить, как это отличается и как я могу избежать этой ошибки ..? Спасибо.
как насчет корпуса arrayWithContentsOfFile ?? Мне не нужно справляться с каким-либо исключением, потому что это не бросает? –
@denis_choe: Да. Если вы прочитали документы для [unarchiveObjectWithFile:] (https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSKeyedUnarchiver_Class/Reference/Reference.html#//apple_ref/occ/clm/NSKeyedUnarchiver/unarchiveObjectWithFile :) и [arrayWithContentsOfFile:] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html#//apple_ref/occ/clm/ NSArray/arrayWithContentsOfFile :), каждый из них говорит, как они реагируют на пустой файл. NSKeyedUnarchiver генерирует исключение, а NSArray просто возвращает nil. – Chuck