字典 -> model
1.使用KVC
init(dict : [String : Any]) {
super.init()
setValuesForKeys(dict)
}
override func setValue(_ value: Any?, forKey key: String) {
super.setValue(value, forKey: key)
}
override func setValue(_ value: Any?, forUndefinedKey key: String) {
}
2.例子
.先分别定义3个class,Person,Room,Friend
.定义对应的属性,添加1中的代码
注意: 定义属性,要么为可选类型,那么就设置初始值
.最后在Person实现
class Person: NSObject { //1.要设置为可选类型,要不就设置初始值
var fr : Friend?
var rm : [Room]? var name : String?
var age : Int =
//字典
var friend : [String : Any]? {
didSet {
fr = Friend(dict : friend!)
}
}
//model数组
var room : [[String : Any]]? {
didSet {
var array = [Room]()
for value in room! {
let k = Room(dict: value)
array.append(k)
}
rm = array
}
}
var image : [String]? init(dict : [String : Any]) {
super.init()
setValuesForKeys(dict)
} override func setValue(_ value: Any?, forKey key: String) {
super.setValue(value, forKey: key)
} override func setValue(_ value: Any?, forUndefinedKey key: String) { } } let dict = ["name" : "kk" , "age" : , "friend" : ["name" : "yy" , "girl" : "lyh"] , "room" : [["size" : , "bag" : "hello"] , ["size" : , "bag" : "ko"]] , "image" : ["a" , "b" , "c"]] as [String : Any] let p = Person(dict: dict) //对于room,friend属性不直接使用,而使用rm, fr的model来代替
demo:https://github.com/zhangjie579/LyModelWithDict
字典 -> model的更多相关文章
- 打造强大的BaseModel(2):让Model实现自动映射,将字典转化成Model
打造强大的BaseModel(1):让Model自我描述 这篇文章将讲述Model一项更高级也最常用的功能,让Model实现自动映射–将字典转化成Model(所有代码全由Swift实现) 将JSON转 ...
- keras模块学习之model层【重点学习】
本笔记由博客园-圆柱模板 博主整理笔记发布,转载需注明,谢谢合作! model层是keras模块最重要的一个层,所以单独做下笔记,这块比较难理解,本博主自己还在学习这块,还在迷糊中. model的方法 ...
- Django & JavaScript 用Ajax实现JSON数据的请求和响应
[描述] 1.Server端定义了两个字段:Article.title 和 Article.content 2.客户端用JavaScript Ajax异步加载请求服务器的JSON数据 效果是点击按钮从 ...
- 深度学习框架PyTorch一书的学习-第五章-常用工具模块
https://github.com/chenyuntc/pytorch-book/blob/v1.0/chapter5-常用工具/chapter5.ipynb 希望大家直接到上面的网址去查看代码,下 ...
- Keras(七)Keras.layers各种层介绍
一.网络层 keras的层主要包括: 常用层(Core).卷积层(Convolutional).池化层(Pooling).局部连接层.递归层(Recurrent).嵌入层( Embedding).高级 ...
- Django ORM 知识点总结
Query是如何工作的 Django QuerySet是懒执行的,只有访问到对应数据的时候,才会去访问数据库.另外如果你再次读取查询到的数据,将不会触发数据库的访问,而是直接从缓存获取. 比如 # 这 ...
- PHP算法之电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23"输出:[" ...
- 【DG】Oracle_Data_Guard官方直译
[DG]Oracle Data Guard官方直译 1 Oracle Data Guard 介绍 Oracle Data Guard概念和管理10g版本2 Oracle Data Guard ...
- DVWA实验之Brute Force(暴力破解)- Low
DVWA实验之Brute Force-暴力破解- Low 这里开始DVWA的相关实验~ 有关DVWA环境搭建的教程请参考: https://www.cnblogs.com/0yst3r-2 ...
随机推荐
- 关于Java中内省的总结
内省基于JavaBean规范对反射进行了封装,提供了更加便捷的通过getter/setter方法来访问字段的方式 Java内省的知识结构图 JavaBean的规范 JavaBean在现在可以认为就是普 ...
- STL学习顺序
仅供参考,大家要学会自己制作,很有成就感的啊! 先看<c++标准程序库>这本书很厚,但是其实很简单,然后再看effective stl,注意顺序,我初学的时候stl还没了解多少就看effe ...
- 编写检测深度模型测试程序python
参考:https://blog.csdn.net/haoji007/article/details/81035565?utm_source=blogxgwz9 首先从网上下载imagenet训练好的模 ...
- Ajax请求文件下载操作失败的原因和解决办法
使用Poi做excel表格导出功能,第一个想到的就是用Ajax来发送请求,但是Ajax和后台代码都执行了,就是无法下载文件. 前台代码 function exportExl(){ var form = ...
- ZJNU 2356 - 六学家
“选出来三个六学家,他们的编号是i,j,k,满足i<j<k,且a[k]=a[j]-a[i]” 所以输入第i个数a[i]时,直接让答案加上前i-1个数中能构成差值为a[i]的数量即可 然后让 ...
- Mybatix实现in查询(五)
在这一节,我们要向大家介绍一下在Mybatis中想要实现in查询,Mapper文件应该怎么配置. 1)在com.mybatis.dao.PartDao中增加接口函数 public List<Pa ...
- Thread--生产者消费者假死分析
package p_c_allWait; public class ValueObject { public static String value = ""; } package ...
- Ctrl +c 脚本中
#!/bin/bashsar -n DEV 1 111111111111111 >>1.txt & #实时网卡流量数据 sleep 3 && kill -2 ...
- OpenMP笔记(六)
OpenMP有三种常见的加锁操作: critical是OpenMP的指令,它规定其后的代码为临界块,任何时候只允许一个线程访问: omp_set_lock是OpenMP的库函数,要跟omp_unset ...
- css3 flex布局详解
原文链接: http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool https://www.cnblog ...