2011-10-20 61 views
1

我有一個應用程序應該保存到一個文件,然後加載它。現在,我還沒有遇到任何問題,所以這是令人困惑的。這發生在我的所有應用程序保存和加載。 繼承人的代碼:我在ios 5中存在文件保存/加載問題?

- (NSString *)pathOfFile{ 
    NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsFolder = [paths objectAtIndex:0]; 
    return [documentsFolder stringByAppendingFormat:@"awesome.plist"]; 
} 

在應用後...

[array writeToFile:[self pathOfFile] atomically:YES]; 

,然後當我試圖加載它...

if ([[NSFileManager defaultManager] fileExistsAtPath:[self pathOfFile]]) { 
    NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:filepath]; 
    achi.text = [array objectAtIndex:0]; 
} 

我的應用程序實際上只是跳過通過if語句(意思是它找不到我認爲的文件)。

請幫忙,如果你有不同的保存方法,我會很高興聽到他們的消息。

+0

你確定目錄在那裏嗎?有時必須創建該文檔目錄。 – gaige

回答

0

我的問題的評論是什麼解決了這個問題,但我不能給他正確的答案,我就寫在這裏貼上自己的答案: 你確保目錄在那裏?有時必須創建該文檔目錄。

0

在您的-(NSString *)pathOfFile方法中,請勿使用stringByAppendingFormat:。當文件路徑的工作,你應該使用stringByAppendingPathComponent:,因爲這將確保適當的斜槓字符添加(或刪除,如果有太多):

return [documentsFolder stringByAppendingPathComponent:@"awesome.plist"]; 
2

- (NSString *)pathOfFile方法是錯誤的。它應該是:

- (NSString *)pathOfFile 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsFolder = [paths objectAtIndex:0]; 
    return [documentsFolder stringByAppendingPathComponent:@"awesome.plist"]; 
}