博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios学习:文件简单读写
阅读量:5335 次
发布时间:2019-06-15

本文共 3818 字,大约阅读时间需要 12 分钟。

2013.10.05补充  参考自

要把自定义类保存到plist文件里,要注意一下三点:

1、自定义类要继承NSCoding协议,实现 -(void)encodeWithCoder:(NSCoder *)coder 方法和  - (id) initWithCoder: (NSCoder *)coder方法

2、在写入plist文件时要对数据序列化然后写入:[NSKeyedArchiver archiveRootObject:array toFile:filename];array是要写入的数据,filename是plist文件路径

3、在读取plist文件数据时要对数据反序列化才能用:NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithFile: filename];

建议在有条件的情况下还是把数据放到 NSMutableArray / NSArray / NSMutableDictionary / NSDictionary 里,写入plist文件吧

 

ios项目的文件分工程项目里的文件和程序沙盒里的文件两种,其中项目工程里的文件是只读的,为沙盒里的文件可读可写.对于读文件而言,不管是工程里的还是沙盒的,方法都一样,唯一不同的在于文件路径的获取.

1 文件目录

 

2 txt文件.每一行数据的字段之间是用 \t 来分割

 

3  TWFXCityCode类:

1 #import 
2 3 @interface TWFXCityCode : NSObject 4 { 5 @public 6 NSString *cityName; 7 NSString *cityCode; 8 NSString *pinyin; 9 NSString *sortPinyin;10 NSString *provinceName;11 NSString *provinceCode; 12 }13 14 @end

 

4 TWFXViewController类的头文件

1 #import 
2 #import "TWFXCityCode.h" 3 4 @interface TWFXViewController : UIViewController 5 6 @property (retain, nonatomic) NSMutableArray *weatherData; 7 8 - (IBAction)btnClick_readFile:(UIButton *)sender; 9 - (IBAction)btnClick_writePlist:(UIButton *)sender;10 - (IBAction)btnClick_readPlist:(UIButton *)sender;11 - (IBAction)btnClick_test:(UIButton *)sender;12 @end

 

5 项目工程里txt文件的读取:

1 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test123" ofType:@"txt"]; 2  3    NSArray *fileData; 4     NSError *error; 5  6     //读取file文件并把内容根据换行符分割后赋值给NSArray 7     fileData = [[NSString stringWithContentsOfFile:filePath 8                                           encoding:NSUTF8StringEncoding 9                                              error:&error]10                 componentsSeparatedByString:@"\n"];11     12     13     //获取NSArray类型对象的迭代器14     NSEnumerator *arrayEnumerator = [fileData objectEnumerator];15     NSString *tempStr;16     17     while (tempStr = [arrayEnumerator nextObject]) {18         19         TWFXCityCode *cityCode = [[TWFXCityCode alloc] init];20         21         //把每行字符串再按 \t 符分割22         NSArray *cityInfo = [tempStr componentsSeparatedByString:@"\t"];23         24         cityCode->cityCode = cityInfo[0];25         cityCode->cityName = cityInfo[1];26         cityCode->pinyin   = cityInfo[2];27         cityCode->sortPinyin = cityInfo[3];28         cityCode->provinceCode = cityInfo[4];29         cityCode->provinceName = cityInfo[5];30         31         [self.weatherData addObject:cityCode];32         [cityCode release];33     }

 

6 把数据保存到沙盒里的plist文件

1  //获取应用程序沙盒的Documents目录 2     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 3      4     NSString *plistPath1 = [paths objectAtIndex:0]; 5      6     //得到完整路径名 7     NSString *filename = [plistPath1 stringByAppendingPathComponent:@"weathertest.plist"]; 8      9     //保存对字符串解析后的数据.dictionary里的value不能是自定类型对象么?还是说自定义类要实现指定的协议?10     //没办法,暂时先用一个dictionary来保存value吧11     NSMutableDictionary *myDic = [[NSMutableDictionary alloc] init];12         13     for (TWFXCityCode *city in self.weatherData) {14             15         NSMutableDictionary *tempDic = [[NSMutableDictionary alloc] init];16         [tempDic setValue:city->cityCode forKey:@"cityID"];17         [tempDic setValue:city->cityName forKey:@"cityName"];18         [tempDic setValue:city->pinyin forKey:@"cityPinyin"];19         [tempDic setValue:city->sortPinyin forKey:@"citySortPinyin"];20         [tempDic setValue:city->provinceCode forKey:@"provinceID"];21         [tempDic setValue:city->provinceName forKey:@"provinceName"];22         23         [myDic setValue:tempDic forKey:city->cityCode];24     }25     26     NSLog(@"写plist文件完成");27     [myDic writeToFile:filename atomically:YES];28

 

7 沙盒里plist文件的内容

 

转载于:https://www.cnblogs.com/zouzf/archive/2013/01/29/2882047.html

你可能感兴趣的文章
Java中的编码
查看>>
PKUWC2018 5/6
查看>>
As-If-Serial 理解
查看>>
洛谷P1005 矩阵取数游戏
查看>>
在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
查看>>
无线通信基础(一):无线网络演进
查看>>
如何在工作中快速成长?阿里资深架构师给工程师的10个简单技巧
查看>>
WebSocket 时时双向数据,前后端(聊天室)
查看>>
关于python中带下划线的变量和函数 的意义
查看>>
linux清空日志文件内容 (转)
查看>>
安卓第十三天笔记-服务(Service)
查看>>
Servlet接收JSP参数乱码问题解决办法
查看>>
【bzoj5016】[Snoi2017]一个简单的询问 莫队算法
查看>>
Ajax : load()
查看>>
MySQL-EXPLAIN执行计划Extra解释
查看>>
Zookeeper概述
查看>>
Zookeeper一致性级别
查看>>
单例模式的几种实现方式及对比
查看>>
邓白氏编码 申请
查看>>
Linux远程登录
查看>>