Enviar pesquisa
Carregar
18 NSUserDefaults
•
0 gostou
•
439 visualizações
Tom Fan
Seguir
iOS 设置
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 13
Baixar agora
Baixar para ler offline
Recomendados
06 Subclassing UIView and UIScrollView
06 Subclassing UIView and UIScrollView
Tom Fan
Semantics
Semantics
Tom Fan
Storage
Storage
Tom Fan
Web sockets
Web sockets
Tom Fan
HTML5 Web workers
HTML5 Web workers
Tom Fan
Intro to-html5
Intro to-html5
Tom Fan
Multimedia
Multimedia
Tom Fan
PhoneGap 通信原理和插件系统
PhoneGap 通信原理和插件系统
Tom Fan
Recomendados
06 Subclassing UIView and UIScrollView
06 Subclassing UIView and UIScrollView
Tom Fan
Semantics
Semantics
Tom Fan
Storage
Storage
Tom Fan
Web sockets
Web sockets
Tom Fan
HTML5 Web workers
HTML5 Web workers
Tom Fan
Intro to-html5
Intro to-html5
Tom Fan
Multimedia
Multimedia
Tom Fan
PhoneGap 通信原理和插件系统
PhoneGap 通信原理和插件系统
Tom Fan
Html5 history
Html5 history
Tom Fan
Geolocation
Geolocation
Tom Fan
File api
File api
Tom Fan
Deviceaccess
Deviceaccess
Tom Fan
Css3
Css3
Tom Fan
Webstorage
Webstorage
Tom Fan
Html5 最重要的部分
Html5 最重要的部分
Tom Fan
AT&T 的 HTML5 策略和应用现状
AT&T 的 HTML5 策略和应用现状
Tom Fan
PhoneGap 2.0 开发
PhoneGap 2.0 开发
Tom Fan
Android 平台 HTML5 应用开发
Android 平台 HTML5 应用开发
Tom Fan
HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型
Tom Fan
17 Localization
17 Localization
Tom Fan
16 CoreData
16 CoreData
Tom Fan
15 Subclassing UITableViewCell
15 Subclassing UITableViewCell
Tom Fan
14 Saving Loading and Application States
14 Saving Loading and Application States
Tom Fan
13 UIPopoverController and Modal View Controller
13 UIPopoverController and Modal View Controller
Tom Fan
12 Camera
12 Camera
Tom Fan
11 UINavigationController
11 UINavigationController
Tom Fan
10 Editing UITableView
10 Editing UITableView
Tom Fan
09 UITableView and UITableViewController
09 UITableView and UITableViewController
Tom Fan
Mais conteúdo relacionado
Mais de Tom Fan
Html5 history
Html5 history
Tom Fan
Geolocation
Geolocation
Tom Fan
File api
File api
Tom Fan
Deviceaccess
Deviceaccess
Tom Fan
Css3
Css3
Tom Fan
Webstorage
Webstorage
Tom Fan
Html5 最重要的部分
Html5 最重要的部分
Tom Fan
AT&T 的 HTML5 策略和应用现状
AT&T 的 HTML5 策略和应用现状
Tom Fan
PhoneGap 2.0 开发
PhoneGap 2.0 开发
Tom Fan
Android 平台 HTML5 应用开发
Android 平台 HTML5 应用开发
Tom Fan
HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型
Tom Fan
17 Localization
17 Localization
Tom Fan
16 CoreData
16 CoreData
Tom Fan
15 Subclassing UITableViewCell
15 Subclassing UITableViewCell
Tom Fan
14 Saving Loading and Application States
14 Saving Loading and Application States
Tom Fan
13 UIPopoverController and Modal View Controller
13 UIPopoverController and Modal View Controller
Tom Fan
12 Camera
12 Camera
Tom Fan
11 UINavigationController
11 UINavigationController
Tom Fan
10 Editing UITableView
10 Editing UITableView
Tom Fan
09 UITableView and UITableViewController
09 UITableView and UITableViewController
Tom Fan
Mais de Tom Fan
(20)
Html5 history
Html5 history
Geolocation
Geolocation
File api
File api
Deviceaccess
Deviceaccess
Css3
Css3
Webstorage
Webstorage
Html5 最重要的部分
Html5 最重要的部分
AT&T 的 HTML5 策略和应用现状
AT&T 的 HTML5 策略和应用现状
PhoneGap 2.0 开发
PhoneGap 2.0 开发
Android 平台 HTML5 应用开发
Android 平台 HTML5 应用开发
HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型
17 Localization
17 Localization
16 CoreData
16 CoreData
15 Subclassing UITableViewCell
15 Subclassing UITableViewCell
14 Saving Loading and Application States
14 Saving Loading and Application States
13 UIPopoverController and Modal View Controller
13 UIPopoverController and Modal View Controller
12 Camera
12 Camera
11 UINavigationController
11 UINavigationController
10 Editing UITableView
10 Editing UITableView
09 UITableView and UITableViewController
09 UITableView and UITableViewController
18 NSUserDefaults
1.
NSUserDefaults 范圣刚,princetoad@gmail.com,www.tfan.org
2.
• 很多应⽤用程序都包含⽤用户可以设置的⾸首选项 • 这⼀一章我们将使⽤用
NSUserDefaults 类为 Whereami 增加⾸首选项功能,这个应⽤用将指定 MKMapView 的地图类型。
3.
更新 Whereami
4.
• 每⼀一个 MKMapView
都有⼀一个 mapType 的属性⽤用 来指定它应该显⽰示街道,卫星图像,还是都显 ⽰示。 • 我们通过增加⼀一个 UISegmentedControl 来让⽤用户 切换地图类型。 • ⽤用户的选择将被保存为⼀一个preference,下次应⽤用 再启动的时候,⾸首选的地图类型将会被显⽰示。
5.
• style =
Bar, Segement = 3 • 建⽴立⼀一个outlet: mapTypeControl, ⼀一个 action: changeMapType
6.
• 在 WhereamiViewController.m
中实现 changeMapType: - (IBAction)changeMapType:(id)sender { switch ([sender selectedSegmentIndex]) { case 0: { [worldView setMapType:MKMapTypeStandard]; } break; case 1: { [worldView setMapType:MKMapTypeSatellite]; } break; case 2: { [worldView setMapType:MKMapTypeHybrid]; } break; default: break; } } • 构建并运⾏行,应⽤用可以改变地图类型,但是下次启 动时不会记住
7.
使⽤用 NSUserDefaults
8.
• 我们可以使⽤用⼀一个 NSUserDefaults
的实例来保存 地图类型。 • 每个应⽤用都有⼀一个 NSUserDefaults 的实例,并且 可以通过发送类消息 standardUserDefaults 到 NSUserDefaults 类来访问 • NSUserDefaults 像字典⼀一样可以⽤用⼀一个 key 来访问 ⾥里⾯面的对象,并且在⽤用户第⼀一次访问它的时候会 ⾃自动读取,并且在有更改的时候会⾃自动写⼊入。
9.
• NSUserDefaults 的
key 总是 NSString 格式,⼀一个 key 就唯⼀一标识了⼀一个⾸首选项 • ⾸首选项的值是⼀一个对象,这些值必须是基本类型 或者是 可序列化的属性列表类型
10.
• ⾸首先在 WhereamiViewController.m
顶部声明⼀一个 静态变量来持有地图类型的⾸首选项名字 NSString * const WhereamiMapTypePrefKey = @"WhereamiMapTypePrefKey"; @implementation WhereamiViewController
11.
• 然后再添加下⾯面的代码到 changeMapType:
中 • Library/Preferences ⺫⽬目录 - (IBAction)changeMapType:(id)sender { [[NSUserDefaults standardUserDefaults] setInteger:[sender selectedSegmentIndex] forKey:WhereamiMapTypePrefKey]; switch ([sender selectedSegmentIndex]) { case 0: { [worldView setMapType:MKMapTypeStandard]; } break; case 1: { [worldView setMapType:MKMapTypeSatellite]; } break; case 2: { [worldView setMapType:MKMapTypeHybrid]; } break; default: break; } }
12.
• 当我们的应⽤用第⼀一次发送 standardUserDefaults
时,将会把⾸首选项⽂文件从磁盘加载,更新我们的 viewDidLoad 来读取这个值,并相应的设置地图 类型 - (void)viewDidLoad { [super viewDidLoad]; ! // Do any additional setup after loading the view, typically from a nib. [worldView setShowsUserLocation:YES]; NSInteger mapTypeValue = [[NSUserDefaults standardUserDefaults] integerForKey:WhereamiMapTypePrefKey]; // 更新 UI [mapTypeControl setSelectedSegmentIndex:mapTypeValue]; // 更新地图 [self changeMapType:mapTypeControl]; } • 构建并运⾏行,确认⼀一下重启的时候⾸首选项是否⽣生效
13.
• 通常我们要在⽤用户可能访问⾸首选项之前,先给我
们的⾸首选项注册⼀一个默认的值。 • 这也就意味着是说我们要在 application delegate 的实例被创建之前 • 重写 initialize 类⽅方法类为我们的⾸首选项注册⼀一个 默认的值 + (void)initialize { NSDictionary *defaults = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:1] forKey:WhereamiMapTypePrefKey]; [[NSUserDefaults standardUserDefaults] registerDefaults:defaults]; }
Baixar agora