ios - Obj-C持久性和动态类型检查

标签 ios objective-c

这只是我的事,我不知道如何最好地处理类似的情况,例如从磁盘中检索对象的情况,在这种情况下,我知道它应该只是NSDictionary类型。但是,做这样的假设不是一个好的编码实践……规范是先检查它是哪个类,然后将其转换为Dictionary?

如果是这样,我是否首先要在NSData类中检索文件,然后询问它是否是NSDictionary类?

    NSString *destinationString = [NSString stringWithFormat:@"%@/%@",dataPath,filename];

    NSDictionary *file = [[NSDictionary alloc]initWithContentsOfFile:destinationString];
    if (file) {
        return YES;
    }
    return NO;
}

最佳答案

您不知道initWithContentsOfFile的实现方式。可能会检查文件的开头,以查看它是否与字典匹配,如果不匹配,则提早保释(返回nil)。它可能比首先获取数据要有效得多。

根据initWithContentsOfFile的文档,该方法检查文件中包含的数据类型,并且不会向您返回“坏”或“错误”的对象,因此您可以确定非null对象是好的。

您的代码是否需要尝试创建数组然后再创建字典是另一回事。

关于ios - Obj-C持久性和动态类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17284128/

相关文章:

ios - 从数组加载数据时遇到问题

ios - 在 Storyboard Xcode 6 中包装几个元素

ios - XCUITest - 如何检查 webview 是否已更新其内容?

iphone - CATransform3DTranslate 之后的 CATransform3DRotate

iphone - 在 iphone 中加载默认图像后如何在启动画面上播放视频?

ios - 获取不同状态下的详细 iOS CPU 使用情况

ios - 如何解决 Swift 3 中的键盘问题?

ios - 如何检查数组中重复的内容?

ios - OpenGL ES 代码在 Android 中工作,但 glAttachShader 不适用于 iOS

objective-c - iphone 应用程序 : drag drop UIImageView