iOS:字典数组中有字典数组怎么解析

iOS:字典数组中有字典数组怎么解析,第1张

第一步:创建两个模型类(模型类集成NSObject)

Snip20161215_101png

FKGoodsOrderModel文件内容如下

// h文件==============================#import <Foundation/Foundationh>@class FKGoodsModelInOrder;@interface FKGoodsOrderModel : NSObject@property(nonatomic, assign) double sumPrice;@property(nonatomic, assign) double sumCurrency;@property(nonatomic, assign) NSInteger sumNumber;@property(nonatomic, assign) NSInteger orderStatus;@property(nonatomic, copy) NSString barName;@property(nonatomic, strong) NSMutableArray <FKGoodsModelInOrder >products;@end// m文件(重点)==============================#import "FKGoodsOrderModelh"@implementation FKGoodsOrderModel+ (NSDictionary )mj_objectClassInArray {    

// 表明你products数组存放的将是FKGoodsModelInOrder类的模型

   return @{             @"products" : @"FKGoodsModelInOrder",

            };

}@end

FKGoodsModelInOrder文件内容如下:

// h文件==============================#import <Foundation/Foundationh>@interface FKGoodsModelInOrder : NSObject@property(nonatomic, assign) NSInteger MethodPay;@property(nonatomic, assign) double price;@property(nonatomic, assign) NSInteger number;@property(nonatomic, copy) NSString name;@property(nonatomic, copy) NSString attribute;@property(nonatomic, copy) NSString img;@property(nonatomic, copy) NSString createTime;@end// m文件(啥都没写)#import "FKGoodsModelInOrderh"@implementation FKGoodsModelInOrder@end

第二步:在返回上图数据的控制器中,导入这两个头文件

#import "FKGoodsOrderModelh"#import "FKGoodsModelInOrderh"

第三步:利用外层模型(FKGoodsOrderModel)调用MJExtension的mj_objectArrayWithKeyValuesArray:responseObject[@"data"]方法

selfgoodsOrderModelArray = [FKGoodsOrderModel mj_objectArrayWithKeyValuesArray:responseObject[@"data"]];

至此结束

字典不记录顺序。 你可以另外建一个列表 keys=[] 在构建字典的同时把键填到这个key中 dic[1234]="你好" keysappend(1234) 取字典的时候用keys里的有顺序的键 print(dic[keys[0]]) print(dic[keys[1]])

可能上面的标题有些拗口,学过PHP的小伙伴们都知道,PHP中的数组的下标是允许我们自定义的,PHP中的数组确切的说就是键值对。而在OC我们要用字典(Dictionary)来存储,当然了Java用的是Map来存储键值对。 网络请求有get和post方法

Dictionary是一组定义好的key:value键值对,并不是任意字符串都可以转换成为Dictionary的。

通常字符创需要满足某种格式,比如json,可以通过SBJson等工具转换

//从plist文件中读取数据

- (void)readDataFromPlist

{

//1先获取文件路径

NSString filePath = [[NSBundle mainBundle] pathForResource:@"Book" ofType:@"plist"];

//2根据路径初始化字典对象

selfdic = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];

//将不可边字典变成可变字典

selfaddressBook = [NSMutableDictionary dictionaryWithDictionary:_dic];

//将字典封装成对象

//(1)从字典中遍历出key

for (NSString key in selfdic) {

//根据key获取对应的数组

NSArray groupArr =selfdic[key];

//(5) 创建可变的小数组,存储封装的对象

NSMutableArray newGroupArr = [NSMutableArray array];

//(3)获取小数组中元素(遍历小数组)

for (NSDictionary groupDic in groupArr) {

//(4)通过字典初始化AddressPerson

AddressPerson Person = [[AddressPerson alloc]initWithDic:groupDic];

[newGroupArr addObject:Person];//将对象存储到新的可变数组中

RELEASE_SAFE(Person);

}

//将要原来key对应的存储字典的小数组替换成装有对象的心得可变的数组

[selfaddressBook setObject:newGroupArr forKey:key];

}

//取出字典中所有的key

selforderedKeys= [[selfaddressBook allKeys]sortedArrayUsingSelector:@selector(compare:)];

// NSLog(@"%@",addressBook);

}

不是很明白你的意思,网络请求不该传json吗?什么叫id类型的字典,你是想说键值对吧,为什么不指明数据类型呢,不要滥用id哦。

if ([object isKindOfClass [NSMutabledictionary class]]) {

NSMutabledictionary dic = (NSMutabledictionary )object;

[object setObject: 新增元素内容 for key:新增元素key]

}

手写的代码,当然你的id数据可能不是NSMutabledictionary 而是NSDictionary,自己转一下好了。

Swift 语言

如果说您说的是创建一个可以存储 nil 和 数字 类型的字典,那就是把字典定义为

var dict = [String:Int]() //这里是整数,可以适当更改类型,只要在类型后面加一个就行了

然后就可以像平常一样用了,比如

dict["key"] = nil

或是

dict["anotherKey"] = 1

当然你也可以在最开始就赋值,如果包含nil应该能够自动判断类型

在日常开发中,将网络请求中获取的 JSON 数据转为数据模型,是我们开发中必不可少的 *** 作。

通常我们会选用诸如 YYModel 、 JSONModel 或者 MJExtension 等第三方框架来实现这一过程。这些框架实现原理的核心就是 Runtime 和 KVC ,以及 Getter / Setter 。

实现的大体思路如下:借助 Runtime 可以动态获取 成员列表 的特性,遍历模型中所有属性,然后以获取到的属性名为 key ,在 JSON 字典中寻找对应的值 value ;再使用 KVC 或直接调用 Getter / Setter 将每一个对应 value 赋值给模型,就完成了字典转模型的目的。

从这份 JSON 中可以看出,字典中取值除了 字符串 之外,还有 数组 和 字典 。那么在将字典转换成数据模型的时候,就要考虑 模型嵌套模型 、 模型嵌套模型数组 的情况了。

经过分析,我们总共需要三个模型: XXStudentModel、XXAdressModel、XXCourseModel。

NSObject+XXModelh、NSObject+XXModelm 就是我们用来解决字典转模型所创建的分类,协议中的 + (NSDictionary )modelContainerPropertyGenericClass 方法用来告诉分类特殊字段的处理规则,比如 id --> uid。

以上就是关于iOS:字典数组中有字典数组怎么解析全部的内容,包括:iOS:字典数组中有字典数组怎么解析、ios怎么把一个字典按字母顺序遍历输出、ios怎么取出数组中的某个字典等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9595578.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存