Могут ли при выпуске обновления приложения измениться или удалиться мои данные в пути пакета?

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

Это код, который я использую, чтобы получить путь для хранения данных:

// Temporary method variables
NSError *error;

// Create a list of paths
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

// Get the path to the apps documents directory from the array
NSString *documentsDirectory = [paths objectAtIndex:0];

// Create a full path to the file
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"FFUserPrefs.plist"];

// Access the file manager
NSFileManager *fileManager = [NSFileManager defaultManager];

// Check if the file exists and if not, copy from the bundle path to the documents path
if (![fileManager fileExistsAtPath:path])
{
    // Get path to file from bundle directory
    NSString *pathBundle = [[NSBundle mainBundle] pathForResource:@"FFUserPrefs" ofType:@"plist"];

    // Copy pref file to app documents folder
    [fileManager copyItemAtPath:pathBundle toPath:path error:&error];
}

Я просто боюсь, что данные, которые мои пользователи сохранили в этом каталоге, могут быть потеряны, и хочу убедиться, что они все еще там после обновления. Единственная причина, по которой я спрашиваю, заключается в том, что после запуска моей новой сборки через xCode на моем телефоне, на котором было установлено приложение выпуска, он стер данные и начал заново. Что мне не хватает? Изменяется ли путь пакета приложения между Xcode и выпуском. Любая информация будет принята с благодарностью!


person XBXSlagHeap    schedule 31.12.2012    source источник


Ответы (1)


Файлы, хранящиеся в каталоге документов, не будут удалены во время обновления приложения. FFUserPrefs.plist хранится в каталоге документов, поэтому он останется там и после обновления. Однако файлы, хранящиеся в пакете приложений ([NSBundle mainBundle]), будут заменены новым пакетом.

person Jack Humphries    schedule 31.12.2012
comment
Черт, вот чего я боялся... тьфу! Любое предложение о том, как я могу сохранить их данные, которые находятся в /var/mobile/Applications/1111111A-111C-111E-111E-E1111111111/AppName.app/FFUserPrefs.plist, прежде чем они будут заменены и перемещены в /Documents? - person XBXSlagHeap; 31.12.2012
comment
Разве не этим ты занимаешься с copyItemAtPath? Вы перемещаете файл PLIST из комплекта приложений в каталог документов. Затем все данные будут записаны в файл PLIST в каталоге документов. Таким образом, файл в каталоге документов, который содержит все пользовательские данные, будет в безопасности, а пустой шаблон в комплекте будет заменен. - person Jack Humphries; 31.12.2012
comment
Ты жжешь! Я просто схожу с ума и даже не читаю свой собственный код правильно! Последний вопрос, если вы знаете... почему я теряю данные из моего выпускающего приложения при отправке новой версии из Xcode? Он стирает все. - person XBXSlagHeap; 31.12.2012
comment
Хм... иногда у меня возникают трудности с заменой приложений из App Store на приложения, подписанные сертификатом разработки. Можешь попробовать еще раз? Нет причин, по которым что-то должно было быть заменено. - person Jack Humphries; 31.12.2012
comment
Да... только что проверил на своем iPad, и он тоже заменил все данные. Мне действительно пришлось изменить свой сертификат разработки, чтобы запустить его с iPhone Distribution на iPhone Developer, если это на что-то повлияет? - person XBXSlagHeap; 31.12.2012