Мое первое обновление для приложения прошло вчера вечером, и я получил жалобу на то, что обновление вызвало исчезновение пользовательских данных (некоторые из них). Я смог воспроизвести проблему, но не могу понять, почему.
В папке "Документы" я сохранил один ключевой файл, который сообщает мне "название" всех файлов пользователя и их файлов (полный путь). Затем все пользовательские файлы также находятся в каталоге Documents.
Когда происходит обновление, файл ключей все еще существует (по крайней мере, я думаю, это потому, что данные отображаются на первом экране приложения - приложения полностью завершают работу и перезапускают после обновления, верно?), но когда пользователь пытается перейти к фактическим файлам, данных нет, и любые новые данные, которые пользователь вводит, никогда не сохраняются.
Он действует точно так же, как при отладке, когда я случайно использовал недопустимое имя файла (с неправильными символами в нем) - он никогда не сохранялся. Но с обновлением эти файлы были сохранены правильно в старой версии, но как-то не работают в новой версии.
Это мое первое приложение и мое первое обновление, и я здесь совсем не понимаю. Я вытащил приложение из продажи на данный момент (не знал, что вы не можете просто вернуться к старой версии! Yikes!) И глубоко оценит любые идеи о том, где/как искать проблему и как писать ХОРОШЕЕ обновление, которое не потеряет данные. (Пока все, что я нашел, это "сохранить данные в каталоге" Документы ", что я уже делал.)
У меня есть оригинальное приложение, сохраненное в его собственном проекте, и я могу вернуться и снова работать с этим. Я скопировал весь этот каталог, когда начал работать над обновлением, и я задаюсь вопросом, может ли это как-то быть проблемой? Я изменил имя каталога, в котором хранятся все файлы XCode, и использовал функцию Project > Rename. Может ли это иметь такой эффект?
Приложение (как оригинал, так и обновление) работает на 4.2 и выше, если это имеет значение.
Решение:
Я считаю, что я понял эту проблему. Как я уже говорил в начале моего вопроса, я сохранял ПОЛНУЮ ПУТЬ файлов пользователя в моих файлах ключей. По-видимому, после обновления не гарантируется, что полный путь не будет таким же (я уверен, что это где-то где-то зарегистрировано, но я не сталкивался с ним).
Итак, пользовательские файлы HAD были перенесены в новый каталог Documents, но я искал их по старому абсолютному пути, то есть не в моей песочнице.
Исправлено, поместив цикл в приложение didFinishLaunching, чтобы вытащить нарушительный файл файловых путей (THAT, я всегда искал локально, и он все еще работал) и отрубал их только до файлаNAMES. Путь к документам должен быть найден и добавлен программно всякий раз, когда выполняются операции с файлами.
Для меня это было действительно полезно для меня, что нет способа вернуться к предыдущему двоичному файлу в магазине, потому что повторная установка исходной версии не устранила бы проблему пользователя, но я бы поверила, что она, по крайней мере, изначально. Я бы хотел, чтобы был способ отклонить ОБНОВЛЕНИЯ, но все же разрешил новые покупки (так как проблема не повлияла на новые покупки). Вероятно, это не достаточно распространенная ситуация, чтобы гарантировать это.