Objc将数据写入iOS真机的plist文件中

时间:2021-10-15 05:57:20

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.

如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)


如何写入模拟器的博文在 这里

但是这对真机不管用,因为在真机环境下,App在Xcode中的Resources文件夹都是不可写的.所以我们要在App第一次运行时将需要修改且长久保存的数据放到Document目录下:

//在Document目录中初始化地图数据文件,因为该目录下文件可写且可以持久保存
+(void)initDataFile{
    NSString *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,
                                                            YES)[0];
    //取得目标文件路径
    sMapInfoInDocPath = [docPath stringByAppendingPathComponent:@"MapInfo.plist"];
    NSFileManager *fm = [NSFileManager defaultManager];
    //如果目标文件不存在说明是App第一次运行,需要将相关可修改数据文件拷贝至目标路径.
    if (![fm fileExistsAtPath:sMapInfoInDocPath]) {
        NSError *error = nil;
        //取得源文件路径
        NSString *srcPath = [[NSBundle mainBundle] pathForResource:MAP_INFO_FILE ofType:@"plist"];
        if (![fm copyItemAtPath:srcPath toPath:sMapInfoInDocPath error:&error]) {
            CCLOG(@"ERR:copy file failed:%@",error);
        }
    }
}

注意当删除一个App后,该App先前存放在Document目录下的所有文件都会被删除.