我为我的应用程序创建了一个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拍摄的屏幕。
答案 0 :(得分:0)
stringForKey:
正在返回nil
。
它正在返回nil
,因为它无法找到“用户名”的密钥。
找不到“用户名”的密钥,因为该应用的用户默认值中不存在该密钥。
密钥不存在,因为(A)它从未存在,对于该应用程序,或者(B)它存在但是它已被删除。
(A)如果应用程序通过Springboard删除,或者整个设备(模拟器)被重置,可能会在设备或模拟器上发生。这两种情况中的任何一种都是真的吗?
(B)如果您在代码中执行了删除密钥的操作,可能会发生这种情况。你能否证实情况并非如此?
答案 1 :(得分:0)
如果您在模拟器中切换模拟器(新的或回归的SDK)或运行不同的操作系统版本,则任何会话信息(包括默认值)都可能无法在这些不同的模拟器运行之间传送。