今天来写一下对昨天对文件的读取和写入的方法。
plist文件
//读取plist文件—Array类型
//[[NSBundle mainBundle] pathForResource:@"contact" ofType:@"plist"];
//方法是读取*.app中的文件,其中第一个参数是要读取的文件的文件名,第二个参数是文件的类型
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"contact" ofType:@"plist"];
//读取plist文件中的数据,要看原来保存在plist文件中的数据结构是如何存储的,这样才能使用正确的类型来存储读取的数据。
NSArray *allContacts = [NSArray arrayWithContentsOfFile:plistPath];
//这里用的是forin快速遍历
for (NSDictionary *dict in allContacts) {
NSString *name = dict[@"name"];
NSString *phoneNumber= dict[@"phoneNumber"];
NSString *address = dict[@"address"];
NSLog(@"%@,%@,%@",name,phoneNumber,address);
}
//写入plist文件—Array类型
NSMutableArray *myArray = [NSMutableArray array];
NSDictionary *dict1 = @{
@"name":@"赵六",
@"address":@"北京" };
NSDictionary *dict2 = @{
@"name":@"钱七",
@"address":@"上海"
};
[myArray addObject:dict1];
[myArray addObject:dict2];
[myArray writeToFile:@"/users/tarena/desktop/aaa.plist" atomically:YES];
//以下原理同上
//读取plist文件—Dictionary类型
NSString *plistPath2 = [[NSBundle mainBundle]pathForResource:@"my" ofType:@"plist"];
NSDictionary *myDic = [NSDictionary dictionaryWithContentsOfFile:plistPath2];
NSArray *friends = myDic[@"friends"];
NSArray *interests = myDic[@"interests"];
NSString *phoneNumber = myDic[@"phoneNumber"];
NSLog(@"%@\n%@\n%@",friends,interests,phoneNumber);
//写入plist文件—Dictionary类型
//[myDic writeToFile: atomically:]
2.偏好设置
这是用plist文件保存用户少量数据的一种手段,因为偏好设置文件是被保存到Library/Preferences中,不能直接写入也不能直接访问文件,因此需要利用NSUserDefaults的类才能进行数据的读和写,一般用于程序的第一次启动的欢迎界面
//实例NSUserDefaults对象
//NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
//读取该偏好设置文件中的数据,根据关键字读取
//NSInteger runCount = [ud integerForKey:@"runCount"];
//根据关键字设置数据
//[ud setInteger: runCount forKey:@"runCount"];
//重要:做同步
//将ud中的数据从内存写入到文件中,即沙盒
//只有执行了这一步,数据才会写入
//同步异步的过程,以后详解
//[ud synchronize];
使用如下:
//AppDelegate.m文件
//实例NSUserDefaults对象
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
//读取关键字
NSInteger runCount = [ud integerForKey:@"runCount"];
if (runCount == 0) {
//第一次启动后
[ud setInteger: runCount forKey:@"runCount"];
[ud synchronize];
// 启动welcomeVC
WelcomeViewController *vc = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"welcomeVC"];
self.window.rootViewController = vc;
}
这里不用else,因为if语句不执行的话,系统则会执行原来self.view.rootViewController的根视图控制器,即ViewController。这样应用程序就不会再次出现欢迎界面。
好了,今天就写这点吧,周末嘛,也要对自己好一点。
你的支持是我前进的最大动力。