2012-02-10 86 views
0

以前我讀過同樣問題的帖子,但是我的問題依然存在。我的應用程序需要首先讀取plist文件以獲取一些參數,並且在裝入設備時,無法讀取默認設置plist(在模擬器上工作)。一種解決方案應該將plist複製到文檔目錄中,但只有這一個?設備是否無法讀取plist中設置的用戶默認值?如果我將它複製到文檔目錄,設備是否能夠將plist的密鑰關聯起來,如果有另一個位置?在執行任何功能之前,我需要閱讀用戶默認值。謝謝。iOS能夠在模擬器上讀取plist文件,但不能讀取設備上的文件

-(void)loadSettings 
{  
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    self.userID = [[NSUserDefaults standardUserDefaults] stringForKey:@"userID"]; 

    self.nom2 = [[NSUserDefaults standardUserDefaults] stringForKey:@"t2"]; 
    self.nom3 = [[NSUserDefaults standardUserDefaults] stringForKey:@"t3"]; 
    self.nom4 = [[NSUserDefaults standardUserDefaults] stringForKey:@"t4"]; 

    self.currentGlobal = [[NSUserDefaults standardUserDefaults] stringForKey:@"versionApp"]; 
    NSLog(@"Version App = %@", currentGlobal); 


    self.colorTab = [[NSUserDefaults standardUserDefaults] stringForKey:@"color"]; 

    firstBoot = [[NSUserDefaults standardUserDefaults] boolForKey:@"firstBoot"]; 

    [defaults synchronize]; 

} 
+0

如果不是文檔目錄,你把plist放在哪裏? – 2012-02-10 18:08:27

+0

...並請顯示您嘗試閱讀的代碼。 – picciano 2012-02-10 18:10:05

回答

1

您不需要將standardUserDefaults的plist複製到文檔目錄。你應該讓iOS自己創建這個文件,而不是將它與你的應用程序一起包含。如果您需要設置默認值,那麼您應該使用standardUserDefaults實例上的registerDefaults:方法來傳遞鍵值對的字典。

+0

好吧,認爲理解...讓我們做一些工作,並告知!謝謝 – Jaume 2012-02-10 20:09:05

+0

太棒了,我沒有standardUserDefaults概念假設...工作!感謝幫助! – Jaume 2012-02-10 20:32:11

1

你看過使用NSUserDefaults嗎?

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html

它會自動做什麼你描述的,你不必管理文件。這是一個簡單的API,您可以讀取和寫入設置,並且iOS爲您保管存儲。

+0

謝謝樓,但我從主包成功複製到文檔目錄並執行NSUserDefaults,但仍不讀取和返回空值。也只有在設備上執行 – Jaume 2012-02-10 18:53:35

+0

看起來Jaume正試圖爲plist提供他的應用程序,而不是讓NSUserDefaults自己創建文件。查看我的答案以獲取更多信息。 – picciano 2012-02-10 20:01:15

3

這聽起來像你只是想設置一些初始值的用戶默認值,以便您的應用程序可以讀取它們。如果是這種情況,那麼你只需要使用registerDefaults:方法NSUserDefaults。例如:

[[NSUserDefaults standardUserDefaults] registerDefaults: 
    [NSDictionary dictionaryWithObject: [NSNumber numberWithBool:YES] 
           forKey: @"firstBoot"]]; 

NSUserDefaults的美是你永遠不必亂用pList的東西或iOS文件系統。

相關問題