在更新 iOS 应用程序时,强制覆盖/删除文档中的 plist? | 珊瑚贝

On updating iOS app, force plist in Documents to be overwritten/deleted?


我猜我的一般问题是我在谷歌上搜索到的没有运气:是否有在应用程序更新后立即调用的方法?

更多细节:我的情况是我在捆绑包中有一个 plist。当用户第一次尝试访问 plist 时,我会检查 Documents 目录,如果它不存在,请从包中复制它。这允许用户在必要时用他们的数据覆盖。但是,每当我更新应用程序时,我都需要在包中有一个新的 plist,它将覆盖用户在 Documents 目录中的现有 plist。显然,我只希望在应用程序更新后发生这种情况,而不仅仅是每次应用程序运行时。是否有捷径可寻?


您可以做的是在 NSUserDefaults 中设置一个键,其中包含当前正在运行的应用程序修订版(您在每次发布时递增的某个常量,或者只是来自 CFBundleVersion 的值)。当您打开您的应用程序时,请快速检查版本是否低于当前版本,然后覆盖 plist 并更新存储的版本,以便后续启动相同版本不会导致覆盖 plist。对于后续启动,如果修订值相同,请继续执行应用程序的其余部分

  • 我一直使用这种方法。这是一种非常简单有效的方法。


您可以将捆绑版本 (CFBundleVersion) 附加到要更新的 plist 中,并根据存储在应用程序 info.plist 中的捆绑版本动态加载。

所以对于 1.3 版,你会加载 your_plist.1.3.plist

1
2
3
NSString *plistString = [NSString stringWithFormat:@”your_plist_%@”, [[NSBundle mainBundle] objectForInfoDictionaryKey:@”CFBundleVersion”]];

[[NSBundle mainBundle] pathForResource:plistString ofType:@”plist”];

  • 这太好了,谢谢!由于您包含代码,因此您选择了正确的答案:)


您还可以在代码中更改 plist 的名称。这样一个新的 plist 将被复制到文档文件夹中。您还可以添加代码来删除旧的:)


来源:https://www.codenong.com/11157522/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9814.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?