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的更多相关文章

  1. 打造强大的BaseModel(2):让Model实现自动映射,将字典转化成Model

    打造强大的BaseModel(1):让Model自我描述 这篇文章将讲述Model一项更高级也最常用的功能,让Model实现自动映射–将字典转化成Model(所有代码全由Swift实现) 将JSON转 ...

  2. keras模块学习之model层【重点学习】

    本笔记由博客园-圆柱模板 博主整理笔记发布,转载需注明,谢谢合作! model层是keras模块最重要的一个层,所以单独做下笔记,这块比较难理解,本博主自己还在学习这块,还在迷糊中. model的方法 ...

  3. Django & JavaScript 用Ajax实现JSON数据的请求和响应

    [描述] 1.Server端定义了两个字段:Article.title 和 Article.content 2.客户端用JavaScript Ajax异步加载请求服务器的JSON数据 效果是点击按钮从 ...

  4. 深度学习框架PyTorch一书的学习-第五章-常用工具模块

    https://github.com/chenyuntc/pytorch-book/blob/v1.0/chapter5-常用工具/chapter5.ipynb 希望大家直接到上面的网址去查看代码,下 ...

  5. Keras(七)Keras.layers各种层介绍

    一.网络层 keras的层主要包括: 常用层(Core).卷积层(Convolutional).池化层(Pooling).局部连接层.递归层(Recurrent).嵌入层( Embedding).高级 ...

  6. Django ORM 知识点总结

    Query是如何工作的 Django QuerySet是懒执行的,只有访问到对应数据的时候,才会去访问数据库.另外如果你再次读取查询到的数据,将不会触发数据库的访问,而是直接从缓存获取. 比如 # 这 ...

  7. PHP算法之电话号码的字母组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23"输出:[" ...

  8. 【DG】Oracle_Data_Guard官方直译

    [DG]Oracle Data Guard官方直译 1 Oracle Data Guard 介绍   Oracle Data Guard概念和管理10g版本2   Oracle Data Guard ...

  9. DVWA实验之Brute Force(暴力破解)- Low

    DVWA实验之Brute Force-暴力破解- Low     这里开始DVWA的相关实验~   有关DVWA环境搭建的教程请参考: https://www.cnblogs.com/0yst3r-2 ...

随机推荐

  1. linux 用户与文件常用命令

    用户与文件 su :切换到超级用户 su - l chesney : 切换到chesney用户 sudo usermod -G sudo -a chesney:把chesney 加入到sudo组 su ...

  2. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring DI(依赖注入)的实现方式属性注入和构造注入

    依赖注入(Dependency Injection,DI)和控制反转含义相同,它们是从两个角度描述的同一个概念. 当某个 Java 实例需要另一个 Java 实例时,传统的方法是由调用者创建被调用者的 ...

  3. INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误解决

    Target device: smartisan-yq601-3fa1a5dcInstalling APK: /Users/wangliang/workspace/emm-android/build/ ...

  4. java基础——既然有了字节流,为什么还要有字符流呢?

    不管是文件读写还是网络发送接收,信息的最小存储单元都是字节,那为什么I/O流操作要分字节流操作和字符流操作呢? 字符流是由JVM将字节转换得到的,所以这个过程还是非常耗时的,同样假如我们不知道编码方式 ...

  5. [安洵杯 2019]easy_serialize_php

    0x00 知识点 PHP反序列化的对象逃逸 任何具有一定结构的数据,只要经过了某些处理而把自身结构改变,则可能会产生漏洞. 参考链接: https://blog.csdn.net/a3320315/a ...

  6. 牛客——Rabbit的字符串

    题目: 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 Rabbit得到了一个字符串,她的好朋 ...

  7. MySQL的DDL和DML

    SQL语句:结构化查询语句,使用SQL与数据库“沟通”,完成相应的数据库操作. 语句分类 DDL(Data Definition Languages)语句:即数据库定义语句,用来创建数据库中的表.索引 ...

  8. Exchange 2016 OWA更改css样式

    css文件目录:E:\Exchange 2016\FrontEnd\HttpProxy\owa\auth\15.1.1713\themes\resources\logon.css ##更改左侧页面颜色 ...

  9. WordPress迁移服务器后报Nginx404的问题

    Wordpress迁移服务器后,只有主页能打开,其它页面都显示404 页面无法访问. 出现这个问题是因为我的Wordpress之前用的服务器是apache+PHP组合,换了服务器后变成了Nginx+P ...

  10. ZJNU 2342 - 夏华献要回家

    (夏华献在学校也要做一次梦!) 把5的答案手动算出 会发现从学校开始,兔子的数量呈斐波那契数列(第2项开始)增长 假如现在有n盏路灯 那么睡觉的时间可以得到为 但是n有1e18大,明显使用标准数学公式 ...