2014-09-23 206 views
0

當我嘗試使用以下方法創建plist文件('Checklist.plist')時,我無法在目錄中看到該文件。 enter image description here無法保存並加載plist文件

- (NSString *)documentsDirectory { 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths firstObject]; 
return documentsDirectory; } 

- (NSString *)dataFilePath { 
return [[self documentsDirectory] stringByAppendingPathComponent:@"Checklists.plist"]; 
} 

爲什麼我不能看到該目錄的文件?我怎麼解決這個問題?

+0

你是什麼意思的「看不見」?你確定文件的創建成功嗎(沒有返回錯誤)?你在模擬器文件系統的正確位置? – 2014-09-23 17:13:26

+0

這些方法不會創建任何內容...向我們展示您寫入文件的位置 – 2014-09-23 17:17:55

+0

當我運行該程序時,我還沒有看到任何錯誤消息。是的,我曾嘗試使用Similator文件系統查看該文件。 #Ben – MdRiduan 2014-09-23 18:05:28

回答

1

您是否在文件中保存了某些內容?

NSString *test = @"test"; 
[test writeToFile:[self dataFilePath] atomically:YES]; 

如果在模擬器中運行這個,你可以的NSLog這個文件的路徑,而且比打開Finder,按cmd + shift + g粘貼文件的路徑,不包括Checklist.plist,只是文件的文件路徑,你會看到該文件您只需創建名爲Checklist.plist

這是我的所有代碼:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    NSArray *testArray = [NSArray arrayWithObjects:@"test", nil]; 
    [testArray writeToFile:[self dataFilePath] atomically:YES]; 
} 
- (NSString *)documentsDirectory { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths firstObject]; 
    return documentsDirectory; 
} 

- (NSString *)dataFilePath { 
    return [[self documentsDirectory] stringByAppendingPathComponent:@"Checklists.plist"]; 
} 
- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
+0

Yeap.I已經在plist文件中保存了一些對象。我按照你提到的所有可能的方式進行了操作,但不起作用。 – MdRiduan 2014-09-23 18:13:01

+0

謝謝,它工作!你能解釋爲什麼問題發生了嗎? – MdRiduan 2014-09-25 18:31:19

+0

@MdRiduan因爲你必須將某些東西保存到文件中,而不是爲它創建它。 – Jacky 2014-09-26 01:42:35

0

時-dataFilePath被稱爲是不是創建的文件。

要編寫一個純字符串在文件中,使用:

NSError *e = nil; 
[@"blabla" writeToFile:[self dataFilePath] atomically:YES encoding:NSUTF8StringEncoding error:&e]; 

NSError *e1 = nil; 
NSString *fileContents = [NSString stringWithContentsOfFile:[self dataFilePath] encoding:NSUTF8StringEncoding error:&e1]; 

這兩個錯誤應該是零和fileContents應該包含原始字符串。