这只是我的事,我不知道如何最好地处理类似的情况,例如从磁盘中检索对象的情况,在这种情况下,我知道它应该只是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/