zoukankan      html  css  js  c++  java
  • 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格式第一次拆分是一换行符' '为分割标记*/

        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];

    }

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

  • 相关阅读:
    网页中添加下划线的方法汇总及优缺点
    git备注
    微信小程序封装年月日时分组件
    微信小程序底部弹窗动画
    微信小程序返回上一页的方法并传参
    微信小程序组件封装
    taro中子父传值
    taro初识一
    reactjs中使用高德地图计算两个经纬度之间的距离
    vue中使用scss
  • 原文地址:https://www.cnblogs.com/longtaozi/p/3835347.html
Copyright © 2011-2022 走看看