我想將某些變量的內容存儲在文件中。用戶或應用程序應該更改該值。如果用戶不能讀取這個文件的內容,那將是非常好的。在啓動時,應用程序讀取文件並用內容初始化一些(全局?)變量。將首選項存儲在文件中並導入值以初始化變量
該文件應包含一些值,如服務器URL等。這可能會改變,但我只想管理一個首選項文件,而不是更新源代碼。以更新爲例,只有首選項文件會被交換。
我該如何管理?
NSUserDefaults不適用於我認爲的這些問題。我應該使用plist還是普通的txt文件?
如何訪問文件的內容?
乾杯
我想將某些變量的內容存儲在文件中。用戶或應用程序應該更改該值。如果用戶不能讀取這個文件的內容,那將是非常好的。在啓動時,應用程序讀取文件並用內容初始化一些(全局?)變量。將首選項存儲在文件中並導入值以初始化變量
該文件應包含一些值,如服務器URL等。這可能會改變,但我只想管理一個首選項文件,而不是更新源代碼。以更新爲例,只有首選項文件會被交換。
我該如何管理?
NSUserDefaults不適用於我認爲的這些問題。我應該使用plist還是普通的txt文件?
如何訪問文件的內容?
乾杯
因此,我將使用該解決方案是,我打開一個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中定義爲全局變量。還有一個問題:
如何區分用戶默認值和系統默認值?
聽起來好像是NSUserDefaults的正是你所需要的。它會讓你存儲URL(作爲字符串)和其他基本類型的變量。
爲什麼你認爲NSUserDefaults在這裏不是正確的解決方案?
試試看!它易於使用和可靠。
使用plist。您可以使用-[NSDictionary initWithContentsOfFile:]
加載它(您可以像使用-[NSDictionary writeToFile:atomically:]
一樣容易地將字典保存爲plist,儘管聽起來不像您需要那樣做)。
我也想過一個plist。問題是我想要訪問不同類中的值。這意味着我要麼每次都要分配plist,要麼我寫一個包裝類,我必須在每個類中包含這個類。所以plists不會是最好的選擇。 – testing 2010-09-03 13:39:54
它不會和使用NSUserDefaults不同(它基本上是一個plist的包裝器 - 你可以在'Library/Preferences/{bundleID} .plist'中看到它創建的文件)。就包括應用程序包的設置而言,plist是標準。 – Brian 2010-09-03 13:58:36
感謝您的信息。我將使用plist和NSUserDefaults。 – testing 2010-09-03 14:55:28
因爲無處不在,它被稱爲用戶偏好。我不需要用戶偏好。我需要一個系統偏好。但我認爲你是對的。有一件事我還沒有發現:我如何創建一個NSUserDefaults「文件」?我可以指定某個plist作爲我之前創建的NSUSerDefaults嗎? – testing 2010-09-03 13:23:19
我想我可以在Xcode中簡單地編輯NSUserDefaults,就像plist一樣。但事情並非如此簡單。您必須使用命令行工具...您必須編寫「默認寫入」。但是域名是什麼?該域是包標識符。我如何獲取包標識符?我只有com.yourcompany。$ {PRODUCT_NAME:rfc1034identifier}。所以我必須改變標識符。我應該輸入什麼產品名稱?什麼爲rfc1034identifier?爲什麼不能讀出我的項目名稱?問題在問題...信息:http://www.cocoadev.com/index.pl?WorkingWithUserDefaults –
testing
2010-09-03 13:55:22