时间:2010-10-19 17:35:37

标签: iphone objective-c

我想知道是否有任何地方我可以看到我的NSUserDefaults中有哪些数据?比如,它是如何运作的?是否有一个存储在我的i​​phone中的文件包含NSUserDefaults中的所有数据,或者文件存储在不同的应用程序中?如果我在应用A中设置了[NSUserDefaults standardUserDefaults] setObject:someString forKey:@"someString"];,我可以使用NSString *listData = [[NSUserDefaults standardUserDefaults] stringForKey:@"someString"]来获取另一个应用B中的字符串吗?是否存在NSUserDefaults的物理存储位置?

3 个答案:

答案 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 */
}