Строка загрузки NSKeyedUnarchiever приводит к сбою приложения при запуске

У меня проблема с загрузкой объекта с помощью NSKeyedUnarchiever.
Мой объект - это NSDictionary, который содержит несколько объектов, таких как массивы, и некоторые мои собственные. Все они соответствуют протоколу NSCoding.

Я сохраняю свой объект так:

[NSKeyedArchiver archiveRootObject:myDictionary toFile:path];

Если я загружаю Объект в том же запуске с этим кодом:

myDictionary = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

все работает.
Но когда я закрываю приложение и снова открываю его, оно вылетает прямо на этой линии.

У кого-нибудь есть идеи, что не так?

1 ответ

Решение

Убедитесь, что ваше сохранение прошло успешно:

if (![NSKeyedArchiver archiveRootObject:myDictionary toFile:path])
{
    // saving failed for some reason
    return;
}

Также убедитесь, что файл существует, прежде чем пытаться разархивировать его:

if ([[NSFileManager defaultManager] fileExistsAtPath:path])
{
    // file does not exist at path (deleted?)
    return;
}
Другие вопросы по тегам