2010-08-28 43 views
8

我想寫一個nsdata到我的磁盤上的文件,我有下面的代碼,它不工作,我做錯了什麼?將NSData寫入文件?

Boolean result = [data writeToFile:@"/Users/aryaxt/Desktop/test2.avi" atomically:YES]; 

test2.avi不存在,我假設將writeToFile將創造對我來說

+3

在附註中,您應該在Objective-C中使用'BOOL',而不是'Boolean'。 – 2010-08-28 21:21:11

+4

嘗試' - [NSData writeToFile:options:error'](http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/Reference/Reference.html#//apple_ref/ doc/uid/20000172-BCIICCHI)並告訴我們報告了什麼錯誤。 – 2010-08-28 21:24:19

+2

(並且請在調試器中驗證數據不是零;也許圖像也是零;-) – 2010-08-28 21:24:45

回答

31

嘗試使用:

NSError *error = nil; 
[email protected]"/Users/aryaxt/Desktop/test2.avi"; 
[data writeToFile:path options:NSDataWritingAtomic error:&error]; 
NSLog(@"Write returned error: %@", [error localizedDescription]); 

這會告訴你爲什麼寫失敗。

+10

只有當方法返回「否」時才應檢查「錯誤」。基礎類可能會在錯誤參數中放置其他對象或僞錯誤,甚至垃圾。 (這並不是說他們*做*,但它是程序員合同的一部分,所以要小心。) – 2010-08-29 02:25:46

+0

我有一個側面的問題,有點偏離文檔的主題:討論 此方法可能不適合當寫入可公開訪問的文件。要安全地將數據寫入公共位置,請改爲使用NSFileHandle。有關詳細信息,請參閱在安全編碼指南中確保文件操作。「 那麼我應該還是使用它? – ColdSteel 2015-06-28 13:16:23

+0

」公共可訪問文件「是什麼意思? – ColdSteel 2015-06-28 13:19:05