在Xcode7.2中設置App的settings bundle時發現當bundle元素類型為Toggle Switch時,在App裡取不到其變化值.
其中Toggle Switch設置如下:
在代碼中以如下方式讀取其值:
BOOL isWarp = [defaults boolForKey:kWarpDrive];
_warpDriveLabel.text = isWarp ? @"Engaged":@"Disabled";
其中kWarpDrive定義如下:
#define kWarpDrive @"warp"
奇怪的是在settings中改變該開關按鈕的狀態,並不能在App中反應出來…確切的說,App中無論開關處在何種狀態,總是讀出NO值.
該App的settings bundle還有其他類型的元素,比如文本或多選欄,其他的元素都可以正常讀出改變的值,唯獨Toggle Switch不可以.
遂改變策略在,App啟動時先注冊其對應的值:
+(void)regDefaultsFromSettingsBundle{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *dict = @{kWarpDrive:@(YES)};
[defaults registerDefaults:dict];
[defaults synchronize];
}
注意我只注冊了kWarpDrive對應的值,其他的值並沒有管.
然後在App中可以正常讀出開關改變的值了,That’s All!!!