plist是什么文件(plist文件解密工具)

今天来写一下对昨天对文件的读取和写入的方法。

plist文件

//读取plist文件—Array类型
plist是什么文件(plist文件解密工具)

//[[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。这样应用程序就不会再次出现欢迎界面。

好了,今天就写这点吧,周末嘛,也要对自己好一点。

你的支持是我前进的最大动力。

发表评论

登录后才能评论