繁体   English   中英

Settings.bundle中的字符串值更新后为空

[英]String value in Settings.bundle empty after update

为了进行质量检查,我在应用程序的设置视图中以PSTitleValueSpecifier的形式显示了应用程序的构建版本。 我将应用程序的当前内部版本号设置为DefaultValue,并为每个新内部版本进行更新。

我的问题是,每当我通过Xcode在开发电话上部署应用程序的新版本时,版本值都不会更新,而是保留在以前的版本中。 更新版本值的唯一方法是从开发电话中删除应用程序,然后部署新版本。 显然,这种方法不能使我们的质量保证部门满意,因为他们随后会丢失所有持久数据。

我已经尝试过,清理项目,重新编译和部署,但是我得到了相同的行为。

还有其他人遇到过这个问题吗? 关于如何解决/修复它的任何想法吗?

这是因为此值是使用NSUserDefaults存储的,该值存储在磁盘上,并且仅在删除应用程序后才删除。 您可以使用与其他任何用户默认设置相同的方式在代码中进行显式设置。 您可以只在Info.plist中创建一个字段,在您要发送新版本时进行更改。 启动时从plist读取该值,然后使用以下命令将其写入您的用户默认值:

NSString *value = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"build_version"];
[[NSUserDefaults standardDefaults] setObject:value forKey@"build_version"];
[[NSUserDefaults standardDefaults] synchronize];

当然,您可以使用设置文件中的任何键名替换“ build_version”。 这是一个骇客,但它可能会让您的质量检查人员满意。

出于论证的考虑,在看到版本号更新之前,您必须完全删除以前的版本实际上是合理的,但是我知道并非所有QA人员都是合理的。 ;-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM