2013-04-10 79 views
-1

我想在本地保存HTML頁面在iPhone上的文件目錄,這樣,如果手機處於脫機狀態編碼的NSData的URL不保存到文檔目錄

我的問題是,我可以加載頁面當我直接調用我的NSData對象寫入文件時,所有原始數據都保存在文檔目錄中的文件中。

但是,只要我使用編碼將我的NSData轉換爲NSString,就會停止將文件寫入文檔目錄。但是,當我打印我的內容對象時,它會註銷正確的數據。我只是想把它保存到一個文件中。

NSURL *url = [NSURL URLWithString:@"http://anyurl"]; 
NSData *urlHtmlData = [NSData dataWithContentsOfURL:url];  

NSString *myString = [[NSString alloc]initWithData:urlHtmlData encoding:NSUTF8StringEncoding]; 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"index.html"]; 
[myString writeToFile:fileName atomically:NO encoding:NSStringEncodingConversionAllowLossy error:nil]; 

什麼可能導致內容停止寫入我的文件?

或者如果有人有更好的解決方案來查看離線網頁,而不是將其保存到文檔目錄?

謝謝

+0

您是否傾銷了「內容」以查看它是否包含您的所有數據? – 2013-04-10 14:34:42

+3

這是無用的:'[[NSString alloc] initWithFormat:@「%@」,myString];' – 2013-04-10 14:35:54

+0

(和'error:nil'可以隱藏許多弊端。) – 2013-04-10 14:37:30

回答

1

這可能有一些錯誤。一:你不使用stringWithFormat:追加一個路徑組件。的NSString有一個方法:

NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"index.html"]; 

二:NSStringEncodingConversionAllowLossy是不是爲writeToFile:定義,所以通過使用它,你實際上指定NSASCIIStringEncoding沒有意識到這一點枚舉的一部分。在我看來,只需使用NSUTF8StringEncoding

此外,NSString *content = [[NSString alloc]initWithFormat:@"%@", myString];除了重複的myString之外絕對沒有任何問題。擦除該行並僅使用[myString writeToFile:....