iOS开发遇到的坑之五--解决工程已存在plist表,数据却不能存入的问题
想写这篇博客其实在一两个月前开发遇见的时候就想把这个问题写成博客的,奈何自己一直懒外加一直没有时间,就把这个事情给耽搁了,好在当时知道下自己一定要把这个问题给描述出来,免得以后其他人遇到这个问题会纠结很久(其实就是我啦,基础知识不过关),所以当时就把这个过程给记录下来了
给这篇博客命名的时候,是不知道该怎么取名字的(语文不好),因为实在难以描述清楚,于是把它归为了 iOS开发遇到的坑系列文章(如果各位看官认为这确实是我基础的问题,请告诉欧文,我会修改过来的,顺便也学习学习)
大概就是下面这种情况:
你想要给你的app内置一个plist表,以便app初始化数据的时候直接从里面读取出来进行加载,常见的就是美团客户端上面有一张全国各地的地区plist,因为这个如果每次都从服务器获取的话,因为它比较大,所以下载的时间就比较长,给用户的体验十分不好,所以干脆内置!
但是问题来了,如果你想给这一张plist表写进数据,恩,那就恭喜入坑,因为你是无论如何写不进去的!(工程里只可读取,不可以写入)
下面解释一下原因:你在工程目录下直接添加的plist 表和我们通常所说的document目录下的位置是不一样的
通过代码就可以看出来 :
NSString *filePatch = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:]stringByAppendingPathComponent:@"Ads.plist”];
在文件夹中的显示位置:
/Users/WayneLiu_Mac/Library/Developer/CoreSimulator/Devices/E6C97A37-A9C1-4F4A-A3EA-EFBB75C1BB43/data/Containers/Data/Application/5E03DC76--4E24-BDBE-F9D5D3072899/Documents/Ads.plist
而
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Ads" ofType:@"plist”]
在文件夹中的显示位置:
/Users/WayneLiu_Mac/Library/Developer/CoreSimulator/Devices/E6C97A37-A9C1-4F4A-A3EA-EFBB75C1BB43/data/Containers/Bundle/Application/7029EF69-D4A9-45D6-90A7-15794D256688/MZTong.app/Ads.plist,path
他们在这里已经分路啦!
- (void)createEditableCopyOfPlistIfNeeded{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *filePatch = AdsPlistPath;
BOOL Exists = [fileManager fileExistsAtPath:filePatch];
// //删除真机里面的数据
// BOOL success1 = [fileManager removeItemAtPath:filePatch error:nil];
// NSLog(@"%hhd",success1);
if(!Exists){
// NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Ads" ofType:@"plist"];
NSString *plistPath = [[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:@"Ads.plist"];
NSError *error;
BOOL success = [fileManager copyItemAtPath:plistPath toPath:filePatch error:&error];
if(!success){
NSAssert1(, @"错误写入文件:'%@'.", [error localizedDescription]);
}
}
NSMutableArray *data = [[NSMutableArray alloc] initWithContentsOfFile:filePatch];
if (data.count == ){
NSLog(@"==plist没有数据");
}else{
self.adsArr = data;
NSLog(@"plist 的数据%@", data);//直接打印数据。
// [data removeAllObjects];
// [data writeToFile:filePatch atomically:YES];
}
}
NSString *filePatch = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:]stringByAppendingPathComponent:@"Ads.plist”];
这段代码获取document目录,接下来你就可以对它进行写入操作咯!
iOS开发遇到的坑之五--解决工程已存在plist表,数据却不能存入的问题的更多相关文章
- iOS开发遇见的坑之二:工程文件中插件和自身工程命名冲突
在升级cocoapod后,我重新管理了一下工程,其实也就是把各个类分类进行管理 类似于这样 然后编译就发现不能运行 1.其中一个错误是工程文件缺失,根据提示添加进来进行 2.有一个是pch的相对路径变 ...
- iOS开发中 workspace 与 static lib 工程的联合使用
在iOS开发中,其实workspace的使用没有完全发挥出来,最近做了一些研究,也想把之前写过的代码整理下,因为iOS里面的布局方式,交互方式也就那么几种.所以,整理好了之后,更能快捷开发,而且能够形 ...
- iOS开发遇到的坑之六--使用cocopods管理第三方库时,编译出现Library not found for -lPods问题的解决办法
在项目中有时候会遇到Library not found for -lPods(这里的IPods指的是你具体的第三方库)的问题 出现这个错误的原因是:xcode在编译的时候找不到这个库,从而导致项目无法 ...
- iOS开发的那些坑
最近重新拿起了iOS的开发,使用OC和Swift混编,碰到了一些比较棘手的问题,在这里记录下来,方便自己以后或他人不再入坑.这篇文章的内容包含: UITableViewCell的真实结构在iOS的环境 ...
- iOS开发遇到的坑之三--使用asi框架在xcode下正常运行,但是打包时却不能进行网络访问
前言: 前两篇博客遇到的问题是前几天在实验室开发的时候遇到的,花了两三天时间在上面,今天突然心血来潮,想把这些”坑”写下来,所以才有了这两篇写的很丑的博客随笔 今天在开发时又遇到一个问题,那就是标题所 ...
- [转载]常见的移动端H5页面开发遇到的坑和解决办法
转过来,平时看看.虽然还有很多问题至今无解.比如:华为麒麟950的P8和meta打开我们的应用首页经常偶发白屏.!! 1.安卓浏览器看背景图片,有些设备会模糊. 用同等比例的图片在PC机上很清楚,但是 ...
- 常见的移动端H5页面开发遇到的坑和解决办法
转过来,平时看看.虽然还有很多问题至今无解.比如:华为麒麟950的P8和meta打开我们的应用首页经常偶发白屏.!! 1.安卓浏览器看背景图片,有些设备会模糊. 用同等比例的图片在PC机上很清楚,但是 ...
- iOS开发遇到的坑之四--图片命名不规范
最近上手并主导一个小项目的研发,在开发地图模块的时候,UI切图给我们使用,他给的图片命名是1.1.1.png 1.1.2.png 1.1.3.png 我也没有多看,就直接打包发给小组成员叫他添加到Im ...
- iOS开发小技巧--利用MJExtension解决数据结构复杂的模型转换
一.开发中难免会遇到,系统返回的数据中字典套集合,集合里面又套一层字典,然后字典里面还有字典或者集合等等的复杂结构的数据...MJExtension轻松搞定这类问题 1.解决方法一: 例:百思项目中帖 ...
随机推荐
- 解决webSocke客户端连接服务端返回400错误
原因: nginx使用了转发,头信息没设置全,问题出现在nginx的配置文件 解决办法: 修改nginx.conf配置文件,在linux终端敲入vim /etc/nginx/nginx.conf,找到 ...
- spring框架_AOP和注解
1.什么是AOP :全称是Aspect Oriented Programming即:面向切面编程. 简单来说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础 ...
- NetCore + Mysql + EF:No coercion operator is defined between types 'System.Int16' and 'System.Boolean',
总结三种解决办法: 1.Mysql升级到7 2.Nuget安装Pomelo.EntityFrameworkCore.MySql 2.2.0替代MySql.Data.EntityFrameworkCor ...
- 51nod1244 欧拉函数之和 杜教筛
和上一题差不多,一个是μ*I=e,一个是φ*I=Id 稍改就得到了这题的代码 (我会告诉你我一开始逆元算错了吗) #include <bits/stdc++.h> #define MAX ...
- Testlink设置
1. Testlink配置修改 1.1. config.inc.php 1.1.1. 日志路径配置 /** * @var string Path to store logs - *for securi ...
- RTC-IC-PCF2129
一特点: -20~70度,SPI/I2C接口,1.2 V to 4.2 V ,可编程看门狗,时钟输出以便校准,闹钟输出,时间戳输出.低功耗高精度,电源切换,中断输出. SPI接口和I2C接口硬件接法: ...
- 在写fegin客户端的时候无法继承接口
仔细查看fegin是不是写成类了,要接口才行
- Swagger 2.0 集成配置
传统的API文档编写存在以下几个痛点: 对API文档进行更新的时候,需要通知前端开发人员,导致文档更新交流不及时: API接口返回信息不明确 大公司中肯定会有专门文档服务器对接口文档进行更新. 缺乏在 ...
- Java函数的传参机制
一 最近的一个项目,里面各种返回void,参数用引用类型,那叫一个熟和多,但是也把我绕糊涂了. 我就打算好好理一理java的传参机制,整理一番 二 很多人一听Java的传参,那一定会脱口而出,java ...
- 洛谷P1965 转圈游戏
https://www.luogu.org/problem/show?pid=1965 快速幂 #include<iostream> #include<cstdio> #inc ...