有的时候需要再Xcode工程目录中查看你自己创建的plist文件保存的大量数据,这样子比较方便处理一些应用。比如说给一个几千条记录的excel文件,保存的事汉字部首或者拼音信息,要制作一个字典查询功能,当然首先需要对excel的记录类容做解析处理,将它转换成plist文件形式会更方便我们的查看和使用:
a、在使用excel数据的时候,将他处理成csv格式(txt);
这个步骤可以再文档编译器和Excel中完成,注释设置好解析格式,如添加分割判断字段等
b、让后使用通过图去文件的方法得到字符串,进行解析,存储到Array或者Dictionary中;
代码参考如下:
-(NSString *)csvReadStringFromFile:(NSString *)fileName
{
//取得text文件路径
NSString *textfileUrl = [[NSBundle mainBundle] pathForResource:fileName ofType:@"txt"];
//取得text文件中的字符串内容
NSString *contentsStr = [NSString stringWithContentsOfFile:textfileUrl encoding:NSUTF8StringEncoding error:nil];
return contentsStr;
}//这个函数从csv或txt文件得到json字符串类容
-(NSArray *)csvGetArrayFromFile:(NSString *)fileName
{
NSString *contentStr = [self csvReadStringFromFile:fileName];
/*csv格式第一次拆分是一换行符' '为分割标记*/
NSArray *mainArray = [contentStr componentsSeparatedByString:@" "];
NSMutableArray *destinationArray = [[NSMutableArray alloc] initWithCapacity:0];
/*csv格式第二次拆分应该是逗号‘,’分割,但是text格式,分割的标记是换位符号‘ ’*/
NSMutableArray *newMainArr = [[NSMutableArray alloc] init];
for (NSString *subStr in mainArray)
{
NSMutableArray *subArray = (NSMutableArray *)[subStr componentsSeparatedByString:@" "];
NSMutableString *subString = [NSMutableString stringWithString:subStr];
NSRange range;
labe:{
range = [subString rangeOfString:@" "];
}
if (range.length) {
[subString deleteCharactersInRange:range];
goto labe;
}//注意这个地方使用的一个goto进行函数跳转。
/*The goto statement unconditionally transfers control to the statement labeled by the specified identifier.*/
[newMainArr addObject:subString];
[destinationArray addObject:subArray];
}
return destinationArray;
}//这个函数是讲json字符串解析成一个Collection Obj 这里是Array,
c、在工程中新建一个空的文件emptyfile,让后将Array或者Dictionary的Data写入空文件中,因为Array和Dictionary是json格式的数据,所以file中的数据也是json格式的。
代码参考:
NSString *filepath = [[NSBundle mainBundle] pathForResource:@“emptyfile" ofType:nil];
[Array writeToFile:filepath atomically:YES];
d、打开file文件可以看到json格式的数据了,下一步是讲file文件的属性改成.plist,这样当再次点击进入file文件的时候,file文件已经变成plist文件。
e、经过上面几个步骤,就可以将一个excel数据组织整json数据存储到plist文件中,方便使用和查看。这时候从plist文件读取json数据代码参考如下:
NSString *radicalpinyinPlist = [[NSBundle mainBundle] pathForResource:@"radicalPinyin" ofType:@"plist"];
_pinyinArr = [NSArray arrayWithContentsOfFile:pinyinArrPlist];
f、将图片数组存入plist文件,这里注意,如果实在工程目录下得给定了文件属性为plist的文件,是无法写入内容的,所以这个plist文件需要是在代码中指定的plist文件,另外图形上下文绘制的一般是png的图片,所以参看代码如下:
#define kfileName @"charImageArray.plist"
//填充文件路径,
-(void)fillFilePath
{
_filePath = NSHomeDirectory();
_filePath = [_filePath stringByAppendingPathComponent:@"Library/Caches"];
//注意这里kfileName必须要包括文件的属性,否则写入将失败。
_filePath = [_filePath stringByAppendingPathComponent:kfileName];
NSFileManager *fm = [NSFileManager defaultManager];
if (![fm fileExistsAtPath:_filePath]) {
NSLog(@"指定文件不存在 ");
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict writeToFile:_filePath atomically:YES];
}
}{
NSData *data = UIImagePNGRepresentation(self.characterPlat.staticImg);
NSMutableDictionary *mudict = [NSMutableDictionary dictionaryWithContentsOfFile:_filePath];
[mudict setObject:keyArray forKey:@"newImg"];
[mudict writeToFile:_filePath atomically:YES];
}
—————————————