从standardUserDefaults获得nil,

时间:2010-09-14 20:12:44

标签: iphone ios4

我为我的应用程序创建了一个Settings.bundle,我尝试通过以下代码读取设置:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if(!defaults)
{
    NSLog("can not get default bundle");
}
NSString *usr = [NSString stringWithFormat:@"%@",[defaults stringForKey:@"username"]];
NSLog(usr);

控制台中的输出为(null)。我之前使用过它并且有效。这种情况发生在我升级到iOS的最新xcode之后。我不确定是否有任何改变?

以下是我的Settings.bundle拍摄的屏幕。

alt text

2 个答案:

答案 0 :(得分:0)

stringForKey:正在返回nil

它正在返回nil,因为它无法找到“用户名”的密钥。

找不到“用户名”的密钥,因为该应用的用户默认值中不存在该密钥。

密钥不存在,因为(A)它从未存在,对于该应用程序,或者(B)它存在但是它已被删除。

(A)如果应用程序通过Springboard删除,或者整个设备(模拟器)被重置,可能会在设备或模拟器上发生。这两种情况中的任何一种都是真的吗?

(B)如果您在代码中执行了删除密钥的操作,可能会发生这种情况。你能否证实情况并非如此?

答案 1 :(得分:0)

如果您在模拟器中切换模拟器(新的或回归的SDK)或运行不同的操作系统版本,则任何会话信息(包括默认值)都可能无法在这些不同的模拟器运行之间传送。