В настоящее время мое приложение для Iphone еще не выпущено. Когда я работал с симулятором / устройством, я модифицировал свое приложение, чтобы добавить больше кеша в encodeWithCode:
и initWithCoder:
. Проблема в том, что при загрузке приложения я пытался использовать некоторые закодированные объекты, которых раньше не было. Например:
В предыдущей версии приложения (например, 1.2) у меня есть этот код:
- (void)encodeWithCoder:(NSCoder*)coder {
[coder encodeObject:myArray forKey:NCITEMTABLE_ARCHIVE_HOME_ITEMS_KEY];
}
Но в новой версии (например, 1.3) я использую этот init:
- (id)initWithCoder:(NSCoder*)coder {
if (self = [super initWithCoder:coder]) {
myArray = [[coder decodeObjectForKey:NCITEMTABLE_ARCHIVE_HOME_ITEMS_KEY] retain];
myArray2 = [[coder decodeObjectForKey:NCITEMTABLE_ARCHIVE_HOME_ITEMS_2_KEY] retain];
}
return self;
}
и приложение завершится сбоем, поскольку не может найти myArray2.
В симуляторе или тестировании я могу просто удалить старую версию и установить из свежей. Тем не менее, я боюсь, что когда он будет выпущен, я не могу сказать своему пользователю удалить старое приложение и установить новое свежее. Кто-нибудь сталкивался с этой проблемой?