2013-06-05 37 views
1

我使用了很多NSUserDefaults,我希望每次应用程序开始删除它们,除了两个对象,这是不知何故可能?如何删除除两个对象以外的所有NSUser默认值?

任何帮助表示赞赏

+3

如果每次应用程序启动时将其删除,为什么首先使用NSUserDefaults?只需保留你的AppDelegate属性或单身。 –

+0

谢谢,但这就是我的做法 – stefanosn

+1

我建议重构应用程序的这一部分,看起来你正在使用'NSUserDefaults'来处理不断变化或需要加载到内存中的东西。正如@HotLicks所述,解决方案将它们加载到AppDelegate中。 – swiftcode

回答

2

我假设你知道你想保留哪两个物体?如果是这种情况,请使用以下代码:

id obj1 = [[NSUserDefaults standardUserDefaults] [email protected]"keyForObj1"]; 
id obj2 = [[NSUserDefaults standardUserDefaults] [email protected]"keyForObj2"]; 

NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier]; 
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain]; 

[[NSUserDefaults standardUserDefaults] setObject:obj1 forKey:@"keyForObj1"]; 
[[NSUserDefaults standardUserDefaults] setObject:obj2 forKey:@"keyForObj2"]; 
+0

谢谢卡梅隆这是我需要的代码,虽然我错了使用NSUserDefaults。谢谢大家告诉我你的建议! – stefanosn

1

您需要跟踪的关键自己,并删除他们推出相关的对象。更重要的是,虽然:为什么你要将数据存储在NSUserDefaults中,你只需要通过应用程序的单次运行来保存数据呢?这类数据应该可以保存在内存中。

+0

这是我如何做到这一点,我需要找到一个解决方案,而不是再次编写代码:) – stefanosn

1

您可以将这两个项目保存在不同的密钥下并在ViewDidLoad中添加到代码中。 让我知道实际问题。

+0

问题是,当试图检索或保存到nsuserdefaults时,会降低我的应用程序的速度。这发生在使用我的应用程序几天后。 – stefanosn

+0

@stefanosn - 然后不要使用NSUserDefaults!你在滥用它。 –

+0

使用Plist或核心数据然后进行简单持久 – Alex

相关问题