2009-10-20 67 views
0

我用來寫入文件的幾種方法返回一個表示它們成功的BOOL,例如,如何找出文件I/O操作失敗的原因?

的NSDictionary:

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

的NSKeyedArchiver:

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

不知何故,它返回NO在我的測試的設備之一。這太好了(好吧,不是),但無論如何找出爲什麼這些操作可能失敗?

回答

3

現代的方法是從(根對象|字典)創建NSData,然後使用writeToFile:options:error:writeToURL:options:error:將該數據寫入所需的路徑。這些方法通過引用返回一個NSError對象,該對象包含發生事件的描述,包括(至少在某些情況下)用戶可呈現的錯誤消息。

創建表示一本字典數據,使用NSPropertyListSerialization(如果字典和它的所有內容,一路下來,是一個有效的property list)或存檔(如果沒有)。