大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > IOS技巧 > plist基本操作

plist基本操作(1)

关键词:基本操作plist  阅读(1157) 赞(15)

[摘要]本文是对plist基本操作的讲解,对学习IOS苹果软件开发有所帮助,与大家分享。

重要概念:某些路径下“只能读,不能写”的原因

iPhone、ipad真机上

Resouces文件夹:是只读的,无法写入。

document 和temp文件夹:可读,可写。

一、工程结构

二、源代码

1、头文件:PlistManage.h

@interface PlistManage : NSObject

-(void)resourcePathFileRead;//当前工程资源目录,不同于真机“沙箱”中的路径

-(NSString *)docPath;//获取document文件夹路径

-(BOOL)isDirNeedCreate:(NSString *)dirPath;//判断目录是否需要新创建

-(BOOL)isFileNeedCreate:(NSString *)filePath;//判断文件是否需要创建

-(void) doAdd;

-(void) doRead;

-(void) doModify;

-(void) doDelete;
@end

2、一些基本函数的实现:

//获取document目录路径
-(NSString *)docPath
{
    NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    return [paths objectAtIndex:0];
}
//路径是否需要创建
-(BOOL)isDirNeedCreate:(NSString *)dirPath
{
    if ( NO == [[NSFileManager defaultManager] fileExistsAtPath:dirPath] )
    {
        return [[NSFileManager defaultManager] createDirectoryAtPath:dirPath
                                         withIntermediateDirectories:YES
                                                          attributes:nil
                                                               error:NULL];
    }
    
    return NO;
}
//文件是否需要创建
-(BOOL)isFileNeedCreate:(NSString *)filePath{
    if ( NO == [[NSFileManager defaultManager] fileExistsAtPath:filePath] )
    {
        return [[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil];
    }
    
    return NO;
}

3、添加:包括创建不存在的空文件

-(void) doAdd{
    
    NSString *docPath=[self docPath];
    NSLog(@"当前docment路径:\n%@",docPath);
    NSString *dataFile=[docPath stringByAppendingPathComponent:@"docData.plist"];
    
    if (YES==[self isFileNeedCreate:dataFile]) {
        NSLog(@"文件原先不存在,现已新建空文件!");
    }else{
        NSLog(@"文件已存在,无需创建!");
    }
    
    NSMutableDictionary *plistDic = [[NSMutableDictionary alloc ] init];
    // 添加2个“单条记录”
    [plistDic setObject:@"shanghai" forKey:@"recordKey001"];
    [plistDic setObject:@"beijing" forKey:@"recordKey002"];
    // 添加2个“字典记录”
    [plistDic setObject:[NSDictionary dictionaryWithObjectsAndKeys:@"Jack",@"name",@"22",@"age",nil] forKey:@"dicKey001"];
    [plistDic setObject:[NSDictionary dictionaryWithObjectsAndKeys:@"Tom",@"name",@"33",@"age",nil] forKey:@"dicKey002"];
    
    [plistDic writeToFile:dataFile atomically:YES];//完全覆盖
    NSLog(@"添加内容完成!!");
}

运行结果:

对应路径下生成了新文件:

内容如下:

4、读取

-(void) doRead{
    NSString *dataFile=[[self docPath] stringByAppendingPathComponent:@"docData.plist"];
    
    //读取所有内容
    NSDictionary* dic = [NSDictionary dictionaryWithContentsOfFile:dataFile];
    NSLog(@"完整内容:\n%@",dic);
    
    //读取第一层“字典记录”
    NSDictionary* dicValue=[dic objectForKey:@"dicKey001"];
    NSLog(@"读取第一层“字典记录”:\n%@",dicValue);
    
    //读取第一层“字典记录”中的“子元素”
    NSLog(@"读取第一层“字典记录”中的“子元素”:\nname=%@",[dicValue objectForKey:@"name" ]);
    
    //读取第一层“单条记录”
    NSLog(@"读取第一层“单条记录”:\nrecordKey001=%@",[dic objectForKey:@"recordKey001"]);
}

运行结果:

«上一页12下一页»


相关评论