如何找出文件I/O操作失败的原因?

问题描述:

我用来写入文件的几种方法返回一个表示它们成功的BOOL,例如,如何找出文件I/O操作失败的原因?

的NSDictionary:

- (BOOL) writeToFile:(NSString *)path atomically:(BOOL)flag 

的NSKeyedArchiver:

- (BOOL) archiveRootObject:(id)rootObject toFile:(NSString *)path 

不知何故,它返回NO在我的测试的设备之一。这太好了(好吧,不是),但无论如何找出为什么这些操作可能失败?

现代的方法是从(根对象|字典)创建NSData,然后使用writeToFile:options:error:writeToURL:options:error:将该数据写入所需的路径。这些方法通过引用返回一个NSError对象,该对象包含发生事件的描述,包括(至少在某些情况下)用户可呈现的错误消息。

创建表示一本字典数据,使用NSPropertyListSerialization(如果字典和它的所有内容,一路下来,是一个有效的property list)或存档(如果没有)。