2013-10-31 39 views
2

我正在構建一個應用程序,該應用程序將被多個客戶端重用。應用程序的一個區別是EventID。我不想在每次創建這些應用程序的新應用程序時更改代碼,而是使用某種配置文件並在其中設置該ID,並保持代碼與訪問此文件的代碼相同。什麼是最好的地方(plist)?如果可能,我如何在代碼和全局中訪問此密鑰?iOS應用程序中的動態設置放置

回答

4

如果你把你的應用程序的Info.plist文件中的設置,您可以通過以下方式訪問它:

NSString *eventID = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"EventID"]; 

您也可以存儲在一個單獨的屬性列表文件(Settings.plist你的價值,例如),它包括在你的應用程序的「複製包資源」構建階段,並獲得它像這樣:

NSString *settingsPath = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"plist"]; 
NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:settingsPath]; 
NSString *eventID = [settings objectForKey:@"EventID"]; 

的一種方式,使其更容易閱讀您的設置將提供通過類訪問:

@interface CNSSettings : NSObject 

+ (NSString *)eventID; 

@end 

@implementation CNSSettings 

+ (NSDictionary *)settingsDictionary 
{ 
    static NSDictionary *_settingsDictionary = nil; 

    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     NSString *settingsPath = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"plist"]; 
     _settingsDictionary = [NSDictionary dictionaryWithContentsOfFile:settingsPath]; 
    }); 

    return _settingsDictionary; 
} 

+ (NSString *)eventID 
{ 
    return [[self settingsDictionary] objectForKey:@"EventID"]; 
} 

@end 

使用上面的類,你就必須做到以下幾點:

NSString *eventID = [CNSSettings eventID]; 
+0

是否可以給像警報類型,聲音plist文件通知中心的設置。 –

相關問題