2010-09-03 52 views
0

我想將某些變量的內容存儲在文件中。用戶或應用程序應該更改該值。如果用戶不能讀取這個文件的內容,那將是非常好的。在啓動時,應用程序讀取文件並用內容初始化一些(全局?)變量。將首選項存儲在文件中並導入值以初始化變量

該文件應包含一些值,如服務器URL等。這可能會改變,但我只想管理一個首選項文件,而不是更新源代碼。以更新爲例,只有首選項文件會被交換。

我該如何管理?

NSUserDefaults不適用於我認爲的這些問題。我應該使用plist還是普通的txt文件?

如何訪問文件的內容?

乾杯

回答

0

因此,我將使用該解決方案是,我打開一個plist文件作爲默認值NSUserDefaults的我:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"plist"]; 
NSDictionary *settingsDict = [NSDictionary dictionaryWithContentsOfFile:filePath]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:settingsDict]; 
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults]; 

NSString *serverURL = [settings stringForKey:@"ServerURL"]; 
NSLog(@"%@", serverURL); 

iPhone App : Where do I put a config file?

採取所以,我會同時使用的Plist和NSUserDefaults的。我將在main.m中定義爲全局變量。還有一個問題:

如何區分用戶默認值和系統默認值?

1

聽起來好像是NSUserDefaults的正是你所需要的。它會讓你存儲URL(作爲字符串)和其他基本類型的變量。

爲什麼你認爲NSUserDefaults在這裏不是正確的解決方案?

試試看!它易於使用和可靠。

+0

因爲無處不在,它被稱爲用戶偏好。我不需要用戶偏好。我需要一個系統偏好。但我認爲你是對的。有一件事我還沒有發現:我如何創建一個NSUserDefaults「文件」?我可以指定某個plist作爲我之前創建的NSUSerDefaults嗎? – testing 2010-09-03 13:23:19

+0

我想我可以在Xcode中簡單地編輯NSUserDefaults,就像plist一樣。但事情並非如此簡單。您必須使用命令行工具...您必須編寫「默認寫入」。但是域名是什麼?該域是包標識符。我如何獲取包標識符?我只有com.yourcompany。$ {PRODUCT_NAME:rfc1034identifier}。所以我必須改變標識符。我應該輸入什麼產品名稱?什麼爲rfc1034identifier?爲什麼不能讀出我的項目名稱?問題在問題...信息:http://www.cocoadev.com/index.pl?WorkingWithUserDefaults – testing 2010-09-03 13:55:22

0

使用plist。您可以使用-[NSDictionary initWithContentsOfFile:]加載它(您可以像使用-[NSDictionary writeToFile:atomically:]一樣容易地將字典保存爲plist,儘管聽起來不像您需要那樣做)。

+0

我也想過一個plist。問題是我想要訪問不同類中的值。這意味着我要麼每次都要分配plist,要麼我寫一個包裝類,我必須在每個類中包含這個類。所以plists不會是最好的選擇。 – testing 2010-09-03 13:39:54

+0

它不會和使用NSUserDefaults不同(它基本上是一個plist的包裝器 - 你可以在'Library/Preferences/{bundleID} .plist'中看到它創建的文件)。就包括應用程序包的設置而言,plist是標準。 – Brian 2010-09-03 13:58:36

+0

感謝您的信息。我將使用plist和NSUserDefaults。 – testing 2010-09-03 14:55:28