2011-10-05 98 views
1

我目前正在編寫將數據(從HTTP響應生成數據)寫入駐留在Xcode項目目錄(應用程序包)中的xml文件的代碼。不幸的是,我沒有能夠寫入駐留在Xcode項目中的xml文件,所以,我嘗試了相同的代碼,並且我修改了文件路徑以指向駐留在桌面上的xml文件(我選擇其他位置以便調查問題進一步),令人驚訝的是,它將一個簡單的字符串寫入到xml文件中。我讀了一些帖子,說我們無法寫入應用程序包中的文件,因爲Iphone在這方面存在限制。真的嗎 ?如果是這樣,是否有其他選擇。如果有人對此問題有所瞭解並能提供幫助,我將不勝感激。請注意,我聲明瞭一個錯誤變量,並試圖查看是否可以記錄任何錯誤消息,但調試器未輸入if語句(因此不會發生寫入錯誤)。下面是我寫的示例代碼:寫入駐留在Xcode項目目錄中的文件

//writing to a file 
    NSString *file_path = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"xml"]; 
    NSString *dummy = @"Hello World!!\n"; 
    NSFileManager *filemanger; 
    NSError *writingError = nil; 
    filemanger = [NSFileManager defaultManager]; 

    if ([filemanger fileExistsAtPath:file_path] == YES) 
    NSLog (@"File do exist!!!"); 
    else 
    NSLog (@"File is not found!!!"); 


BOOL sucess = [dummy writeToFile:file_path atomically:YES encoding:NSUnicodeStringEncoding error:&writingError]; 
if(!sucess) 
{ 
    NSLog(@"Unable to write to the file"); 
} 

if (writingError) { 
    NSLog(@"Fail: %@", [writingError localizedDescription]); 
} 

回答

3

在iOS中,應用程序包是已簽名和只讀的,因此是禁用的。而是有一個文件區域,其中一個目錄是Documents,這是一個非常好的保存數據的地方。

下面是一個說明訪問文件目錄的代碼片段:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:fileName]; 
+0

感謝它幫助這麼多! – User897

相關問題