2010-01-18 23 views
1

我正在尋找一個很好的方式來設置我的配置常量。我的想法是用我的配置屬性創建一個單身人士。說mySingletonConf與:URL,USERID,PASSWORD。在sharedInstance的初始化過程中,應讀取配置文件以設置mySingletonConf中的屬性。加載配置常量來動態調用setter?

  1. 我應該使用性質對於這種類型的常量?我拿他們應該是班級屬性?
  2. 是否可以動態設置配置? I. e。 通過讀取mySingletonConf的所有Setter-Methods,然後在加載的配置(.plist-Dictionary)中搜索key ==屬性名稱,然後使用值調用settter?

如果需要新的常量,動態設置事情會很好。然後我只需要創建新的屬性並調整配置文件。 我在正確的軌道上嗎? 感謝您的幫助!

回答

0

NSUserDefaults可以照顧很多東西,它確保配置是用戶特定的,因此如果同一臺Mac上的多個用戶使用您的程序,他們可以獨立配置您的程序。 Interface Builder中還有一個用於綁定用戶界面元素的對象,使事情變得更加簡單。如果你想想讓你的系統配置,你應該使用核心基金會Preference Utilities

對於存儲密碼,可以使用Apple's Keychain Services。用戶可以指定允許哪些程序使用存儲的密碼(理想情況下,這只是您的密碼)。如果密碼沒有特別的重要性,那麼在NSUserDefaults中存儲密碼也是一種選擇。

不要重新發明車輪;爲您提供應用程序範圍的用戶或主機特定配置服務。

+0

非常感謝您的回答!我正在使用.plist從中讀取設置。 .plist包含許多測試參數。現在我已經達到了設定字典的地步,並且我並不想爲每個TestCase中的每個測試參數都配置[configDict objectForKey:paramName]。我的想法是加載所有參數一次,然後使用配置作爲常量(PARAM_A)或類似的東西:[myTestConf paramA];可能嗎? – jelenaasche 2010-01-19 09:04:13

0

嗯,這是可能的:) 我最後寫的提到辛格爾頓,它具有隻讀的公共屬性和在類的內部讀寫訪問(使用分類爲,見private setter example)。

類的瓦爾在初始化過程中充滿了值從的.plist文件。我使用Runtime API來獲取變量列表(只需在Stackoverflow上搜索「objective-c變量列表」),並使用var name作爲關鍵字從loaded.plist字典獲取值。

該值可以使用幾乎爲常量:

MyConstants* testConstants = [MyConstants sharedInstance]; 
NSLog(testConstants.PARAM1);