ios开发对配置文件plist的操作

想当初我是新手,对plist的操作也是一知半解,想发个贴,让大家可以方便一点,解除疑惑,先说明很多人不知道操作plist的一个主要原因是因为很多人把plist建在了工程里了,而工程打包之后是不允许你对工程文件进行操作的,那么plist应该放在哪里呢?你用itools的时候就会知道,工程打包到真机上时,你在itools里查看应用文件里,里面有个Documents目录,这个是我们可以操作的目录,所以我们要将文件放在这个文件夹里(首先在工程里建一个plist文件,要操作时判断Documents里是否有自己建的那个plist文件,没有的话把工程里的plist文件复制过去,有的话就直接操作),具体看下面:

1. 首先在xcode里新建一个项目(我这里名叫PlistDemo),然后在里面加两个目录(plistOperate和plistFile),其中plistOperate文件夹里放我要对plist文件进行操作的通用类,plistFile文件夹放一个默认的plist文件:

ios开发对配置文件plist的操作_第1张图片

2. 好了之后我们先在plistFile里新建一个plist文件,命名为Demo.plist(大家可以自己命名):

右击plistFile文件夹选择New File,然后选中Resource里的Property List:

ios开发对配置文件plist的操作_第2张图片

,点击next命名为Demo.plist,文件创建成功:

ios开发对配置文件plist的操作_第3张图片

此时Demo.plist文件里没内容,当然你也可以在左侧右击Add Row添加初始化或者默认的键和值,我这里不添加;

3. 新建一个对plist操作的通用类,我这里命名为OperatePlist,然后再新建一个视图和视图控制器,我这里命名为plistDemoViewController建好之后整个工程目录如下:

ios开发对配置文件plist的操作_第4张图片

同时在视图上和控制器里写好相应的显示和操作,如下:

ios开发对配置文件plist的操作_第5张图片

点击之后向plist插入数据并读取;

4. 核心部分,OperatePlist

NSFileManager *fileManager = [NSFileManager defaultManager];
    //获取Documents或者Library下的Demo.plist,我这里是Library
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [NSString stringWithFormat:@"%@/Caches/",[paths objectAtIndex:0]];
    NSString *plistPath = [documentsDirectory stringByAppendingPathComponent:@"Demo.plist"];
    // 判断Documents或者Library下的Demo.plist是否存在
    if ([fileManager fileExistsAtPath: plistPath]) 
    {
        NSMutableDictionary *  dict = [[NSMutableDictionary alloc]initWithContentsOfFile : plistPath];
        [dict setObject:infoArray forKey:key];
        [dict writeToFile : plistPath  atomically : YES  ] ;
        [dict release];
    }
    //不存在则把在工程里建的那个plist文件复制到Documents或者Library下
    else {
        NSString *resourceSampleImagesFolderPath =[[NSBundle mainBundle]
                                                   pathForResource:@"Demo"
                                                   ofType:@"plist"];
        NSData *mainBundleFile = [NSData dataWithContentsOfFile:resourceSampleImagesFolderPath];
        [[NSFileManager defaultManager] createFileAtPath:plistPath contents:mainBundleFile attributes:nil];
        NSMutableDictionary *  dict = [[NSMutableDictionary alloc]initWithContentsOfFile : plistPath];
        [dict setObject:infoArray forKey:key];
        [dict writeToFile : plistPath  atomically : YES  ] ;
        [dict release];
    }

5. 运行结果:

ios开发对配置文件plist的操作_第6张图片

6. 源码下载地址:

https://github.com/SincereXing/ios.git

你可能感兴趣的:(Bundle,ios开发,plist,ios配置文件)