iphone - 获取 NSUserDefaults 时崩溃

标签 iphone objective-c cocoa-touch ios nsuserdefaults

下面的代码让我崩溃

 [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"2453"];

我查了一下,发现NSUserDefaults里面没有名字为2453的key。我是第一次运行该应用程序,因此该 key 不会存在,但会在稍后添加。如何忽略此崩溃。

最佳答案

如果这条线

[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"2453"];

是崩溃的线路,你可以试试这个

NSDictionary *dict = nil;
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"2453"] != nil)
    dict = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"2453"];

if (dict) {
    ...
}

我的直觉是,在这种情况下 dictionaryForKey 正在幕后调用 objectForKey 并盲目地尝试将 nil 转换为 NSDictionary 给你,我认为这会导致崩溃。但是通过首先检查自己是否存在该键的任何类型的对象,您可以避免崩溃。给它旋转并报告! :-)

关于iphone - 获取 NSUserDefaults 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5600470/

相关文章:

iphone - 裁剪超出另一个 View 范围的 uiimageview

iphone - 如何替换整个操作系统的默认字体

ios - 后台运行 iOS App 超过 10 分钟

ios - 如何在所有其他 View 之前模态显示 'launch view'?

ios - RGB颜色不正确?

iphone - 如何检测用户是否正在使用他的设备行走/运行?

iphone - iPhone 的颠倒界面

objective-c - XCode 4.5 警告父/子类类别之间的方法名称冲突

iphone - 什么时候 sizeof(int) 在 Objective-C 中不是 4 个字节?

iOS 11 : "Unable to simultaneously satisfy constraints"