)path; // 从文件中读取一个数组数据 + (nullable NSArray *)arrayWithContentsOfURL:(NSURL *)url; // 从URL...是NSArray的子类,所以NSMutableArray也可以用来存储数据,唯一不同的是NSMutableArray是可变数组,存储在该数组中的元素可以删除,也可以动态增加元素,其他用法均与NSArray...NSArray的数据持久化 有时我们需要将数组的信息(数组的元素的值)保存在沙盒中,进行数据持久化,当使用到的时候在重沙盒中读取 可以使用plist文件保存数组,即将数组的信息存储到plist文件中,...将字典数组的信息保存到plist文件中. - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; 从plist文件中还原回字典...NSDictionary与NSArray对比 存储过程 NSArray数组的元素按照顺序存储, NSDictionary不是按照顺序存储的,存储的下标是通过哈希算法算出来的。
所以,自己实现字典转模型还是有必要掌握的。有了这个基础,在利用运行时runtime的动态特性,你也可以实现这些第三方框架。...,这个模型从Plist转换得到。..."]; //读取plist NSArray *dictArr = [NSArray arrayWithContentsOfFile:path]; //字典转模型 NSMutableArray...中也是字典,把数组中的字典转换成模型. // 判断值是否是数组 if ([value isKindOfClass:[NSArray class]]) {...中也是字典,把数组中的字典转换成模型. // 判断值是否是数组 if ([obj isKindOfClass:[NSArray class]]) {
*)path; + (id)arrayWithContentsOfURL:(NSURL *)url; 3.NSArray 的使用注意事项 NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式...只能存放任意OC对象, 并且是有顺序的 不能存储非OC对象, 比如int\float\double\char\enum\struct等 NSArray中不能存储nil,因为NSArray认为nil是数组的结束.../Walkers/Desktop/test.plist" atomically:YES]; NSLog(@"flag = %i", flag); 输出结果:flag = 1 2.从文件中读取数据到NSArray...中 NSArray *newArr = [NSArray arrayWithContentsOfFile:@"/Users/Walkers/Desktop/test.plist"]; NSLog(@"newArr...NSMutableArray基本用法 创建空数组 NSMutableArray *arr = [NSMutableArray array]; 创建数组,并且指定长度为5,此时也是空数组 NSMutableArray
引 iOS的存储方式之一——属性列表plist,还是经常见到的,可以很方便的用来管理一些有序的批量数据,特别是用来显示固定的内容到表单上时,不需要在代码中反复地繁琐编写数组,而可以在plist属性列表中进行可视化操作...PS:看到别的教程都说可以改变键的名字来根据键找到对应的属性,String类型的也一样,但我却找不到方法改,用xml方式改也是说错误,只能用数组的形式来根据位置找,求高人指点 如上图,保证最左边那个三角形箭头是往下的...、读取plist文件 我们通过plist文件名来找到文件,把路径保存在变量path中,然后用一个数组获取plist文件中的内容,并转移到我们刚才创建的用来存储plist内容的变量中去: //ViewController.m...内容 要增加plist内容,我们只要先在刚才存储的可变数组中添加内容,然后把这个可变数组写入到原文件位置就好了,然后重新读取显示: //ViewController.m文件中 // 添加plist...内容 同添加的思路一样,同样也是先操作可变数组,删除某个位置的内容,然后将可变数组存入原位置,再重新读取显示: //ViewController.m文件中 // 删除plist内容 [self.listData
plist构造数据.png 这样我们的plist文件就完成了,下面来说一说通过kvc的方式来读取plist文件。...kvc的概念简单说下 Key-Value-Coding(KVC)键值编码 我们主要使用的是KVC字典转模型,将plist文件中的数据以数据模型的形式读取。...下面来读取吧。 由于我们plist文件的根节点是一个数组 我们以懒加载的方式来创建这个数组,并将从plist中读取的字典信息以模型的形式存储到数组中。..._arrayAllModel) { _arrayAllModel = [NSMutableArray array]; //获得路径并读取plist文件...NSArray *array= [NSArray arrayWithContentsOfFile:starListPath]; for (NSDictionary
obj-c中有一类对象:NSArray,NSDictionary,NSString,NSNumber,NSDate,NSData以及它们的可变版本(指NSMutableArray,NSMutableDictionary...atomically:YES];//(序列化为xml格式后)保存文件 NSArray *arr2 = [NSArray arrayWithContentsOfFile:FILE_NAME];//...> plist> 即NSArray默认是以xml格式来序列化对象的....,有整数,有浮点数,还有一个可变长的数组对象 Sample.m #import "Sample.h" @implementation Sample @synthesize name; @synthesize...atomically:YES];//持久化保存成物理文件 NSData *data2 = [NSData dataWithContentsOfFile:@"/tmp/data.txt"];//读取文件
imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ##8.3 注意点 模型应该提供一个可以传入字典参数的构造方法 **同时,还要提供读取Plist...@return NSArray */ (NSArray *)loadPlist{ // 获取plist文件的NSURL NSURL * plistUrl = [[NSBundle mainBundle...NSArray * array = [NSArray arrayWithContentsOfURL:plistUrl]; NSMutableArray * arrayM = [NSMutableArray...array]; // plist中的数组中存放的是一个一个字典,因此遍历数组中的字典。...- 有一个根据字典返回自己的方法 (类方法、对象方法两种) - 加载plist并转为数组的方法 ### 8.3.2 作为view - 有一个返回自己的实例的方法(至于怎么创建的 无所谓)
完成 读取plist数据,通过选择车辆类型,将筛选出来的数据使用模型数组存放,通过set方法传递给mapView和车辆信息view,并刷新界面 选择车辆信息view 通过代理将当前显示的车辆信息页传递给...} pinView.annotation = annotation; // 取消气泡显示 pinView.canShowCallout = YES; // 设置大头针是否有下落动画...self.collectionView]; [self.view addSubview:self.carPickView]; [self valuechange:self.carPickView]; } 从plist...= [NSMutableArray array]; //读取数据 NSString *path = [[NSBundle mainBundle] pathForResource:@"1..." ofType:@"plist"]; NSArray *array = [NSArray arrayWithContentsOfFile:path]; //存数据 for (
static NSArray* BHReadConfiguration(char *section) { NSMutableArray *configs = [NSMutableArray...读取本地Pilst文件 要读取本地的Plist文件之前,需要先设置好路径。...registedAllModules方法会先按照Level的优先级从大到小进行排序,然后再按照这个顺序依次初始化所有的Module的实例,存入数组中。...读取本地Pilst文件 要读取本地的Plist文件之前,需要先设置好路径。...; // 读取本地plist文件里面的Protocol,并注册到BHServiceManager的allServices数组中 [[BHServiceManager sharedManager
首先实例化一个可变数组 NSMutableArray *pinnedCertificates = [NSMutableArray array]; 下面看一个集合属性 /** The certificates...再去调用之前的serverTrust去验证该证书是否有效,有可能经过这个方法过滤后,serverTrust里面的pinnedCertificates被筛选到只有信任的那一个证书。...最后,还是获取一个数组并遍历,这个方法和我们之前的锚点证书没关系了,是去从我们需要被验证的服务端证书,去拿证书链。这个数组是服务器端的证书链,注意此处返回的证书链顺序是从叶节点到根节点。...如果是AFSSLPinningModePublicKey公钥验证,则和第二步一样还是从serverTrust,获取证书链每一个证书的公钥,放到数组中。...系统的验证,首先是去系统的根证书找,看是否有能匹配服务端的证书,如果匹配,则验证成功,返回https的安全数据。如果不匹配则去判断ATS是否关闭,如果关闭,则返回https不安全连接的数据。
归档(archive)就是将数据整理到外部文件(xml,plist,txt 等)!..."]; [dataArray writeToFile: arrayName atomically: YES]; // 从文件中读取数据到NSDictionary或NSMutableDictionary...NSMutableDictionary *newDictionary=[NSMutableDictionarydictionaryWithContentsOfFile:dictionaryName]; // 从文件中读取数据到...NSArray或NSMutableArray中 NSMutableArray *newArray=[NSMutableArray arrayWithContentsOfFile:arrayName...并且,可以使用响应的方法将XML文件中的内容读取到响应的数据中。object-c还提供了其他的归档方式。
示例 假设,APP本地里面用plist写了一个字典数组,然后写一个CustomerListModel模型。...现在,需要将这个plist字典数组转换成CustomerListModel模型数组,并在VC取值出来赋给表单元cell的模型数组,用于展示数据。...NSString *path = [[NSBundle mainBundle]pathForResource:plistName ofType:@"plist"]; //读取plist...NSArray *dictArr = [NSArray arrayWithContentsOfFile:path]; //字典转模型 NSMutableArray *modelArr...的代理方法调取模型数组用于显示: #pragma mark - 懒加载模型数组 - (NSArray *)customerListModelArr{
) NSArray * pics; 3.初始化 NSArray 成员变量 : 先逐个创建对应的 NSMutableDictionary 字典 , 然后将字典 当做元素 放入 NSArray 数组中 ,...]; NSLog(path3); 4.初始化 数组 : 调用 NSArray 的 arrayWithContentsOfFile 方法 初始化 数组 , 传入 PList 的路径 , 注意 这个...根据 PList 路径 初始化 数组 , 前提是 这个 PList 的类型是 数组类型的 NSArray *array = [NSArray arrayWithContentsOfFile:path3...setPics:(NSArray*)pics; ; 其实际的 变量名称 是 _pics ; 根据 用到 属性时 才去加载 原则 , 这里将加载过程放在 get 方法中 ; 3.读取 plist 频率 :...属性为 空时 才开始从 list 中 初始化 数据 if(_pics == nil){ // 1.
return [[self alloc] initWithDict:dict]; } ``` 字典转模型(懒加载) // 懒加载 // 1.第一次用到时再去加载 // 2.只会加载一次 - (NSMutableArray...*)shops { if (_shops == nil) { // 创建"模型数组" _shops = [NSMutableArray array];...// 获得plist文件的全路径 NSString *file = [[NSBundle mainBundle] pathForResource:@"shops.plist" ofType...:nil]; // 从plist文件中加载一个数组对象(这个数组中存放的都是NSDictionary对象) NSArray *dictArray = [NSArray...arrayWithContentsOfFile:file]; // 将 “字典数组” 转换为 “模型数据” for (NSDictionary *dict in dictArray
基本介绍: UITableView有两种风格:UITableViewStylePlain和 UITableViewStyleGrouped。...cars_total.plist 可以看到数组里面包含若干个字典,字典里两个键值,一个是汽车数组,一个是标题,数组中又是若干个字典,分别是icon键值和 name键值 接下来我们来创建汽车模型 CLCar.h...*)carsWithArray:(NSArray *)array { NSMutableArray *arrayM = [NSMutableArray array]; for...:@"cars_total.plist" ofType:nil]]; NSMutableArray *arrayM = [NSMutableArray array]; for (NSDictionary...我们依然实现返回分组数,和返回分组头标题两个方法,这时当我们滑动tableVIew时,头标题还会自动停留的屏幕最上方,效果如下 ?
; 常见的优化点有: 数据独立性的处理(plist、网络)、魔法数字的问题解决(宏,枚举enum)、属性的懒加载(重写getter方法) 代码示例 /** 序列帧动画:顺序播放一组图片 1...Files 目录通常存放,大、不经常使用的图片; */ - (void) frameAnimation : (UIButton *) button{ //如果正在动画播放直接退出,来保证保证一个动画播放完成...的image,此时需要的参数有:需要播放的序列帧图片数组animationImages(UIImage对象)、帧动画的持续时间animationDuration、帧动画的执行次数animationRepeatCount...--可自行查看UIImageView的属性和方法 //动画图片的数组--可修改的数组NSMutableArray(manage a modifiable array of objects)...;//从字符中分隔成2个元素的数组(图片名+扩展名) // NSString *path = [[NSBundle mainBundle] pathForResource:arrayPicture
以后使用Reactive Cocoa解决问题时,就不需要考虑调用顺序,直接考虑结果,把每次操作都写成一系列嵌套方法或者函数,使代码高聚合,易于管理。...RACSequence RACSequence:RAC中的集合类,用于代替NSArray,NSDictionary,可以使用它来快速遍历数组和字典。..." ofType:nil]; NSArray *dictArr = [NSArray arrayWithContentsOfFile:filePath]; NSMutableArray *items..." ofType:nil]; NSArray *dictArr = [NSArray arrayWithContentsOfFile:filePath]; NSMutableArray *flags...为了保证创建信号时,避免多次调用创建信号中的block,造成副作用,可以使用这个类处理。
我们使用NSUserDefaults写的设置数据都会保存到该目录下的一个plist文件中,这就是所谓的写道plist中! 会被iTunes同步。 tmp:各种临时文件,保存应用再次启动时不需要的文件。...而且,当应用不再需要这些文件时应该主动将其删除,因为该目录下的东西随时有可能被系统清理掉,也可能随着项目退出删掉。不会被iTunes同步。 iPhone在重启时,会丢弃所有的tmp文件。...+(void)writeDataToPlist :(NSMutableArray *)dataArray { NSArray *paths=NSSearchPathForDirectoriesInDomains...文件读取 +(NSArray *)getDataFormPlist{ NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory...dataArray; } 可以查看沙盒的应用 查看真机应用沙盒子 查看模拟器应用沙盒 文件常见操作 判断某文件是否存在 NSFileManager* fm=[NSFileManager defaultManager
,该函数的返回值类型为数组。...返回值之所以是数组因为,作用域里会有若干个相同的目录。...3、字典写入文件 NSString *dictPath = [docPath stringByAppendingPathComponent:@"dict.plist"]; NSDictionary *...,如果存在,先读取文件内容,然后拼接新内容,再写入到文件中。...解码时用到的key要跟编码时指定的key保持一致。
领取专属 10元无门槛券
手把手带您无忧上云