简体   繁体   English

NSUserDefaults更改了更新后IOS应用崩溃

[英]NSUserDefaults changed IOS app crashing after update

updated IOS app with changes in NSUser default keys ( added few more keys and changed some existing key names) app is crashing at initialization time after updating from store . 从商店更新后,NSUser默认密钥(已添加了更多密钥并更改了一些现有密钥名称)中的更改已更新的IOS应用程序在初始化时崩溃。 If I delete the app completely and reinstall it then it is working fine . 如果我完全删除了该应用程序并重新安装,那么它可以正常工作。 We can not clear previous NSUser defaults and recreate it when updating app ( I mean complete re-installation by writing some logic in updated app)?. 我们无法清除以前的NSUser默认值并在更新应用程序时重新创建它(我的意思是通过在更新的应用程序中编写一些逻辑来完全重新安装)?

您可以使用以下代码清除NSUserDefault

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"yourkey"];

try to synchronize the user defaults 尝试同步用户默认设置

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"YourKey"];
[[NSUserDefaults standardUserDefaults] synchronize];yourkey

我建议编写一个迁移器例程,以在应用程序启动并分别更新默认数据库时检查某些以前的密钥。

您通常可以通过执行以下操作清除整个NSUserDefaults,以防万一您忘记了密钥或其他东西:

   [[NSUserDefaults standardUserDefaults] setPersistentDomain:[NSDictionary dictionary]  forName:[[NSBundle mainBundle] bundleIdentifier]];

You can check if app is opening for first time then clear NSUserDefault as below 您可以检查应用是否是第一次打开,然后清除NSUserDefault ,如下所示

[[NSUserDefaults standardUserDefaults] setPersistentDomain:[NSDictionary dictionary]  forName:[[NSBundle mainBundle] bundleIdentifier]];

After that set your NSUserDefault again as per your requirement. 之后,根据NSUserDefault再次设置NSUserDefault

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

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