出于QA目的,我在应用程序的设置视图中将应用程序的构建版本显示为PSTitleValueSpecifier。我将应用程序的当前内部版本号设置为DefaultValue,并为每个新构建更新它。
我的问题是,每当我通过Xcode在开发电话上部署我们的应用程序的新版本时,版本值不会更新,但仍保留在之前的版本中。更新版本值的唯一方法是从开发电话中删除应用程序,然后部署新版本。显然,这种方法并不能让我们的质量保证部门满意,因为他们随后会丢失所有持久数据。
我已经尝试过,清理项目,重新编译和部署,但我得到了同样的行为。
还有其他人遇到过此问题吗?关于如何解决它/修复它的任何想法?
答案 0 :(得分:2)
这是因为此值是使用存储在磁盘上的NSUserDefaults存储的,只有在删除应用程序时才会删除。您可以使用与任何其他用户默认设置相同的方式在代码中显式设置它。您可以在Info.plist中创建一个字段,以便在要发送新构建时更改该字段。在启动时从plist中读取该值,然后使用以下命令将其写入用户默认值:
NSString *value = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"build_version"];
[[NSUserDefaults standardDefaults] setObject:value forKey@"build_version"];
[[NSUserDefaults standardDefaults] synchronize];
当然,您将“build_version”替换为您的设置文件中的任何密钥名称。这是一个黑客,但它可能会满足你的QA人。
为了论证,在看到版本号更新之前,你必须完全删除以前的版本是合理的,但是我意识到不是所有的QA人都是合理的。 ; - )