2013-10-17 59 views
1

在我的應用程序中,我將一些信息存儲在plist文件中。我產生這種plist中使用此代碼:從文檔目錄讀取plist文件時爲空

- (void)saveArrayToFile { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"objects.plist"]; 
    [self.reportArray writeToFile:fileName atomically:YES]; 
} 

隨着IEXPLORER我看着我創建找我創建該文件的應用程序中的應用程序,現在我需要閱讀我的文件恢復。我在網絡上的幾個解決方案,讓我讀這個plist文件找到,所以我嘗試這個解決方案:

- (void)loadObjectFromFile { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES); 
    NSString *documentsDir = [paths objectAtIndex:0]; 
    NSString *path = [documentsDir stringByAppendingString:@"objects.plist"]; 
    NSArray *temp = [NSArray arrayWithContentsOfFile:path]; 
    NSLog(@"%@", temp); 
} 

但如果我期待在Xcode控制檯中,我看不到的內容的日誌我的plist文件,正是我得到這樣的:

2013-10-17 10:29:34.586 MyApp[233:60b] (null) 

我在這裏貼上我的plist文件的內容,所以也許你能幫助我讀回存儲在其中的信息,plist文件的內容是:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<array> 
    <dict> 
     <key>desc</key> 
     <string>Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string> 
     <key>name</key> 
     <string>Dadi rossi</string> 
     <key>price</key> 
     <string>5 €</string> 
    </dict> 
</array> 
</plist> 

Wh在我的解決方案錯了嗎?爲什麼我無法閱讀我的plist文件的內容?謝謝!

回答

2

你的錯誤是在這裏第一線的讀取

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES); 

你從NSDocumentationDirectory,而你是在NSDocumentDirectory存儲數據讀取數據。只需將其替換爲以下行即可。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

第二個錯誤,這裏附加的字符串,而不是PathComponent更換

NSString *path = [documentsDir stringByAppendingString:@"objects.plist"]; 

NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"objects.plist"]; 
+0

我只是試圖解決這個問題,但我仍然得到空...什麼是錯的? – lucgian84

+0

檢查我更新的答案,我發現你的代碼中有另一個錯誤。 –

+0

謝謝!現在它的工作,有2個非常愚蠢的問題:P ...該死的Xcode的自動編譯器 – lucgian84