关于IOS处理plist的读写

       今天在开发的时候,碰到一个任务,需要从服务器上获取正则表达式,放在.plist文件中。因为是新手,从来没处理过此类问题。于是进行www.google.com andwww.baidu.com 但是网络上的代码很杂乱,明显不适合我这个新手。花了很长时间才整理完成。记录之。

       首先在工程中有个名为service.plist文件。此文件是放在app目录下面,编译的时候可读不可写。也就是说从服务器上取下来的数据,是无法写入这个文件上的。那么就需要

在项目启动之后拷贝一份到documents上。以下附上代码

    

    //取得指向应用程序Documents目录的文件系统路径
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    //取得保存在documents中的文件(可能不存在)
    NSString *path = [*documentsDirectory stringByAppendingFormat:@"service.plist"];
    //取得app下建立的文件
    NSString *dataPath = [[NSBundle mainBundle] pathForResource:@"service" ofType:@"plist"];
    //判断Documents是否有service.plist这个文件
    if (![[NSFileManager defaultManager] fileExistsAtPath:path]) 
    {
        //如果没有,则将app下的文件拷贝一份到Documents下
        [[NSFileManager defaultManager] copyItemAtPath:dataPath toPath:path error:nil];
    }


         然后在进行调用服务器接口,返回数据之后,可以通过以下方法写入数据。

	
       NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
       NSString *documentsDirectory = [paths objectAtIndex:0]; 
       NSString *path = [documentsDirectory stringByAppendingFormat:@"service.plist"];
       NSMutableDictionary  *myDictionary = [[[NSMutableDictionary alloc] initWithContentsOfFile:path] autorelease];    
       //获得文本对象的节点值,因为我的节点就一个,所以可以直接去,如果有多重节点,要一个个取。
        NSString* data1= [myDictionary objectForKey:@"telRegex"]; 
       NSLog(@"第一次打印%@",data1);
       //result.returnValue为我从服务器上取得的正则数据
        NSString *numberValue = [NSString stringWithFormat:@"(^%@)",result.returnValue];
       //因为文本中存在节点telRegex所以执行以下方法,是修改操作,如果不存在,则为新增操作
       [myDictionary setObject:numberValue forKey:@"telRegex"];
       NSString* data2= [myDictionary objectForKey:@"telRegex"]; 
       NSLog(@"第二次打印%@",data2);


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值