我想知道是否有任何地方我可以看到我的NSUserDefaults中有哪些数据?比如,它是如何运作的?是否有一个存储在我的iphone中的文件包含NSUserDefaults中的所有数据,或者文件存储在不同的应用程序中?如果我在应用A中设置了[NSUserDefaults standardUserDefaults] setObject:someString forKey:@"someString"];
,我可以使用NSString *listData = [[NSUserDefaults standardUserDefaults] stringForKey:@"someString"]
来获取另一个应用B中的字符串吗?是否存在NSUserDefaults的物理存储位置?
答案 0 :(得分:1)
您的应用的偏好设置存储在[APP_BASE_DIR]/Library/Preferences/
的.plist文件(二进制格式)中。
请参阅~/Library/Application Support/iPhone Simulator/4.1/Applications
以查看iPhone模拟器中的应用基础目录。
答案 1 :(得分:0)
NSUserDefaults存储在plist文件中;在iPhone和iPad上,您无法简单地打开这些文件。 但是,您可以让应用程序将内容打印到调试器。
答案 2 :(得分:0)
我相信沙盒会阻止在iOS下访问其他应用程序的用户默认值。在Mac OS X下,您可以通过下拉到CFPreferences
API来处理其他应用程序的用户默认值:
/* ownership follows the Create/Copy rule, so must release when done -
* here, I just autorelease */
NSString *
value = [(id)CFPreferencesCopyAppValue(CFSTR("key"), CFSTR("com.foo.otherapp"))
autorelease];
if ([value isKindOfClass:[NSString class]]) {
/* use the string */
}