Settings.Bundle操作

来源:互联网 发布:软件实施实习心得体会 编辑:程序博客网 时间:2024/05/01 21:55

#define kProtocol @"protocol"

#define kSlider @"slider"

#define kUserName @"userName"

#define kVersion @"version"

#define kSwitch @"switch"

//用來取得Settings.Bundle各物件的預設值

-(NSDictionary*)settingsBundleDefaultValues

{

NSMutableDictionary *defaultDic_ = [[NSMutableDictionaryalloc]init];

NSURL *settingsUrl =

[NSURLfileURLWithPath:[[NSBundlemainBundle]

pathForResource:@"Root"

ofType:@"plist"

inDirectory:@"Settings.bundle"]isDirectory:YES];

NSDictionary *settingBundle = [NSDictionarydictionaryWithContentsOfURL:settingsUrl];

NSArray *preference_ = [settingBundleobjectForKey:@"PreferenceSpecifiers"];

for (NSDictionary *component_in preference_) {

NSString *key = [component_objectForKey:@"Key"];

NSString *defaultValue = [component_objectForKey:@"DefaultValue"];

if (!key||!defaultValue)continue;

if (![component_objectForKey:key]) {

[defaultDic_ setObject:[component_objectForKey:@"DefaultValue"]forKey:key];

}

}

return defaultDic_;

}

//讀取

- (IBAction)buttonLoad:(id)sender {

/*

[protocol setTitle:@"SMTP" forSegmentAtIndex:0];

[protocol setTitle:@"HTTP" forSegmentAtIndex:1];

[protocol setTitle:@"IMAP" forSegmentAtIndex:2];

[protocol setTitle:@"POP3" forSegmentAtIndex:3];

*/

NSUserDefaults *userDefault = [NSUserDefaultsstandardUserDefaults];

/*

在執行App之前必須進到"設定"去,去設定App的值

settings.bundle內對各物件進行設定預設值也沒有辦法一開始就直接被讀取

所以要對NSUserDefaultKey註冊預設值,值的來源是Settings.BundleDefaultValue

*/

[userDefaultregisterDefaults:[selfsettingsBundleDefaultValues]];

NSArray *arrProtocol = [NSArrayarrayWithObjects:@"SMTP",@"HTTP",@"IMAP",@"POP3",nil];

[protocolsetSelectedSegmentIndex:[arrProtocol indexOfObject:[userDefaultstringForKey:kProtocol]]];

txtVersion.text = [userDefaultstringForKey:kVersion];

[mySwitchsetOn:[userDefault boolForKey:kSwitch] animated:YES];

[slidersetValue: [userDefault floatForKey:kSlider]];

}

//儲存

- (IBAction)buttonSave:(id)sender {

NSUserDefaults *userDefault = [NSUserDefaultsstandardUserDefaults];

NSArray *arrProtocol = [NSArrayarrayWithObjects:@"SMTP",@"HTTP",@"IMAP",@"POP3",nil];

[userDefault setObject:[arrProtocolobjectAtIndex:protocol.selectedSegmentIndex]forKey:kProtocol];

[userDefault setObject:txtVersion.textforKey:kVersion];

[userDefault setBool:mySwitch.onforKey:kSwitch];

[userDefault setFloat:slider.valueforKey:kSlider];

}


原创粉丝点击