Iphone NSUserDefaults setObject和IntegerWorkey,在同一个键上使用,如果没有,我如何解决?

Iphone NSUserDefaults setObject和IntegerWorkey,在同一个键上使用,如果没有,我如何解决?,iphone,objective-c,ios,cocoa-touch,Iphone,Objective C,Ios,Cocoa Touch,我需要遍历NSUserDefaults中的所有键,并将它们转换为另一种格式。稍后,我会按程序将它们转回来 我有很多密钥,我无法按照命名约定或通过其他方式确定我是否使用了setObject或setInteger等 如果我使用setObject,这是否允许我在该键上使用IntegerWorkey 如果我不想,我可以改为使用吗?我很确定使用setObject以后可以使用integerworky 另一种方法是向项目中添加plist并将所有内容存储在其中。它基本上与NSUserDefaults所做的相同,

我需要遍历NSUserDefaults中的所有键,并将它们转换为另一种格式。稍后,我会按程序将它们转回来

我有很多密钥,我无法按照命名约定或通过其他方式确定我是否使用了setObject或setInteger等

如果我使用setObject,这是否允许我在该键上使用IntegerWorkey


如果我不想,我可以改为使用吗?

我很确定使用setObject以后可以使用integerworky

另一种方法是向项目中添加plist并将所有内容存储在其中。它基本上与NSUserDefaults所做的相同,只是您将全部手工完成。您可以将plist的内容读取到NSArray或NSDictionary(无论您首先选择使用哪一个构建它),然后从该对象访问所需的成员


希望这能有所帮助。

不,如果使用
integerworkey:
,您应该无法获得正确的对象。但是,如果使用
objectForKey:
,则可以获得正确的对象。这是因为如果您使用了
setInteger:forKey:
,它会自动调用
setObject:forKey:
。因此,密钥将有一个对象。因此,您需要做的是迭代键,使用
objectForKey:
获取对象,并将其转换为所需的数据类型。

对于此类问题,我建议不要使用PLIST。这是一种不好的做法,如果你“需要”使用它,那么你的设计中可能有错误,你应该重新考虑它的实现。第一句话就获得了这个奖。它似乎确实奏效了。但我确实设置了一个默认值,我想这可能是原因吧?它应该可以用任何一种方法