2011-10-18 44 views
5

我的應用程序將用戶信息/首選項的加密數據寫入文件,並在下次打開應用程序時從該文件讀取數據。iOS:將文件保存到仿真器上,但不在設備上

中寫入一個文件:

- (BOOL)writeFile:(NSString *)data:(NSString *)fileName { 
    return [data writeToFile:fileName 
       atomically:YES 
        encoding:NSUTF8StringEncoding error:nil]; 
} 

讀取文件:

- (NSString *)readFile:(NSString *)fileName { 
    NSData *data = [NSData dataWithContentsOfFile:fileName]; 
    NSString *str = [[[NSString alloc] initWithData:data 
             encoding:NSUTF8StringEncoding] autorelease]; 
    return str; 
} 

這個工程在模擬器罰款。按預期方式寫入和讀取文件。有什麼我必須設置在設備上的文件讀/寫?

+1

你通過'fileName'傳遞了什麼? – jrturton

+1

正如@ jrturton所說,你在寫什麼文件?如果它不在應用程序的目錄中,那麼實際的設備將不允許它,但也許模擬器會這樣做? – Kevin

+0

@Kevin我無法爲應用創建自己的文件? – dee

回答

7

文件名必須位於文檔目錄中。模擬器不會像設備那樣有多少限制它可以寫入文件。

獲取文件目錄如下:

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"myfilename.extension"]; 

通過這個到您的功能上面,你應該罰款。

相關問題