发布 App 更新时,我在 bundle 路径中的数据会改变或被删除吗?
Posted
技术标签:
【中文标题】发布 App 更新时,我在 bundle 路径中的数据会改变或被删除吗?【英文标题】:When releasing an App update, can my data in the bundle path change or get deleted? 【发布时间】:2012-12-31 02:44:30 【问题描述】:我正准备为我的应用发布新的更新,该更新将数据存储在本地捆绑路径中,我希望确保存储在此路径中的数据在更新时不会被删除。这种情况会发生吗?我应该注意什么?
这是我用来获取存储数据路径的代码:
// 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 和发布之间更改。任何信息将不胜感激!
【问题讨论】:
【参考方案1】:在应用更新期间不会删除存储在文档目录中的文件。 FFUserPrefs.plist
存储在文档目录中,所以更新后它仍然存在。但是,存储在 app bundle ([NSBundle mainBundle]
) 中的文件将被新的 bundle 替换。
【讨论】:
这就是我所害怕的……呃!关于如何在 /var/mobile/Applications/1111111A-111C-111E-111E-E1111111111/AppName.app/FFUserPrefs.plist 中保存他们的数据并将其移动到 /Documents 的任何建议? 这不就是你对copyItemAtPath
所做的吗?您正在将 PLIST 文件从应用程序包移动到文档目录。然后将所有数据写入documents目录中的PLIST文件。因此,包含所有用户数据的文档目录中的文件将是安全的,而捆绑包中的空白模板将被替换。
你摇滚!我只是吓坏了,甚至没有正确阅读我自己的代码!最后一个问题,如果你知道的话......为什么我会在从 Xcode 推送新版本时丢失我的发布应用程序中的数据?它会消灭一切。
嗯...有时我很难将来自 App Store 的应用程序替换为使用开发证书签名的应用程序。你能再试一次吗?没有理由更换任何东西。
是的...刚刚在我的 iPad 上进行了测试,它也替换了所有数据。如果这会影响任何事情,我确实必须更改我的开发证书才能让它从 iPhone Distribution 运行到 iPhone Developer?以上是关于发布 App 更新时,我在 bundle 路径中的数据会改变或被删除吗?的主要内容,如果未能解决你的问题,请参考以下文章
Info.plist 中的 Bundle Identifier 与 App ID 和 iTunes Connect 的关系
通过 Catalyst 工具 Xcode 11 从 Bundle for MacOS App 加载 WKWebView 中的 PDF
ERROR ITMS - 90167 No. app bundles found in the package on macOS Sierra