Как обновить мой новый код, чтобы я мог разархивировать данные из своего старого приложения в App Store?

#ios #swift #objective-c #xcode #nskeyedunarchiver

#iOS #быстрый #цель-c #xcode #nskeyedunarchiver

Вопрос:

У меня есть приложение в App Store, которое довольно старое. Я пытаюсь написать обновленную версию. Мои исходные архивированные и неархивированные данные приложения, как показано ниже. Я не могу понять, как теперь получить доступ к этим данным в моем обновленном приложении.

 - (void)saveGG {  NSMutableData *data = [[NSMutableData alloc] init];  NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];  [archiver encodeObject:givens forKey:@"Present"];  [archiver finishEncoding];  [data writeToFile:[self dataFilePath] atomically:YES]; }  - (void)loadGG {  NSString *path = [self dataFilePath];  if ([[NSFileManager defaultManager] fileExistsAtPath:path])  {  NSData *data = [[NSData alloc] initWithContentsOfFile:path];  NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];  gifts = [unarchiver decodeObjectForKey:@"Present"];  [unarchiver finishDecoding];  }  else  {  gifts = [[NSMutableArray alloc] initWithCapacity:20];  }  

Комментарии:

1. В таком случае я бы сохранил этот код таким, как он есть. Свяжи его со Свифтом. В новой версии я бы проверил, существует ли этот файл, и начал бы миграцию, если это так. После завершения миграции удалите этот файл, и этот код больше никогда не будет выполняться. Цель в основном заключается в том, что этот код больше не будет поддерживаться, а будет использоваться для миграции только один раз для каждого пользователя.

2. Спасибо, Матик. Моя проблема в том, что я не могу понять, как связать этот код с Swift. У меня также есть дополнительные поля, которых не было в исходном приложении, поэтому я не передаю полностью похожие поля.

3. Что касается перехода на Swift, вам нужен заголовок моста, а затем в него импортируйте заголовочный файл этого класса, который должен предоставить два метода. При этом вы должны иметь возможность напрямую вызывать методы в Swift и использовать эти данные. Как только вы загрузите данные, вам следует вручную ввести данные в свои новые классы и сохранить их вместе с вашими новыми полями.