首页 > 代码库 > plist文件可以这样使用,

plist文件可以这样使用,

 

有的时候需要再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格式第一次拆分是一换行符‘\n‘为分割标记*/

    NSArray *mainArray = [contentStr componentsSeparatedByString:@"\n"];

    NSMutableArray *destinationArray = [[NSMutableArray alloc] initWithCapacity:0];

    /*csv格式第二次拆分应该是逗号‘,’分割,但是text格式,分割的标记是换位符号‘\t’*/

    NSMutableArray *newMainArr = [[NSMutableArray alloc] init];

    for (NSString *subStr in mainArray)

    {

        NSMutableArray *subArray = (NSMutableArray *)[subStr componentsSeparatedByString:@"\t"];

        NSMutableString *subString = [NSMutableString stringWithString:subStr];

        NSRange range;

    labe:{

         range = [subString rangeOfString:@"\t"];

    }

        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(@"指定文件不存在\n");

        NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];

        [dict writeToFile:_filePath atomically:YES];

    }

}{

    NSData *data = http://www.mamicode.com/UIImagePNGRepresentation(self.characterPlat.staticImg);

    NSMutableDictionary *mudict = [NSMutableDictionary dictionaryWithContentsOfFile:_filePath];

    [mudict setObject:keyArray forKey:@"newImg"];

   [mudict writeToFile:_filePath atomically:YES];

}

—————————————