swift 第十一课 结构体定义model类
结构体是可以作为 model 类使用的不过也要 写下的创建方法
import UIKit
/***
创建一个model 结构,重写init 方法,
结构体的属性不能出现可选类型
**/
struct Model { var title :String
var url :String
var numId :String init(dic :NSDictionary) { self.title = (dic["title"] as? String)!
self.numId = (dic["numId"] as? String)!
self.url = (dic["url"] as? String)!
}
} class ViewController: UIViewController {
lazy var dicArr : Array<Dictionary<String, Any>>! = { var arr = Array<Dictionary<String, Any>>()
for i in ...{
var dic = Dictionary<String,Any>()
var title = String(format:"name_%f", CGFloat(i))
var numId = String(format:"numId_%d",i)
var url = String(format:"https://name -%@ - numId %@",title,numId)
dic["title"] = title
dic["numId"] = numId
dic["url"] = url arr.append(dic)
}
return arr
}() override func viewDidLoad() {
super.viewDidLoad() for dic in self.dicArr {//在这里调用下 稍后公布测试打印的结果 let model = Model.init(dic: dic as NSDictionary)
print(model.url)
}
} override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
测试结果:
https://name -name_0.000000 - numId numId_0
https://name -name_1.000000 - numId numId_1
https://name -name_2.000000 - numId numId_2
https://name -name_3.000000 - numId numId_3
https://name -name_4.000000 - numId numId_4
https://name -name_5.000000 - numId numId_5
https://name -name_6.000000 - numId numId_6
https://name -name_7.000000 - numId numId_7
https://name -name_8.000000 - numId numId_8
https://name -name_9.000000 - numId numId_9
https://name -name_10.000000 - numId numId_10
https://name -name_11.000000 - numId numId_11
https://name -name_12.000000 - numId numId_12
https://name -name_13.000000 - numId numId_13
https://name -name_14.000000 - numId numId_14
https://name -name_15.000000 - numId numId_15
https://name -name_16.000000 - numId numId_16
https://name -name_17.000000 - numId numId_17
https://name -name_18.000000 - numId numId_18
https://name -name_19.000000 - numId numId_19
https://name -name_20.000000 - numId numId_20
https://name -name_21.000000 - numId numId_21
https://name -name_22.000000 - numId numId_22
https://name -name_23.000000 - numId numId_23
https://name -name_24.000000 - numId numId_24
https://name -name_25.000000 - numId numId_25
https://name -name_26.000000 - numId numId_26
那么问题就出现了,结构体和类做 model时候,有什么不同呢??????
Swift中的类与结构体有如下相似点: .定义属性来存储值。 .定义函数来提供功能。 .通过定义下标语法使用下标的方式取值。 .定义构造方法来对其进行初始化。 .通过扩展来在原始基础上添加功能。 .通过协议来定义实现标准。 当然类和结构体也有许多不同点,下面这些功能是类独有的,结构体没有: .通过继承来创建类的子类。 .在运行时允许对类的实例进行类型的检查和解释。 .析构方法可以释放被类引用的资源。 .通过引用计数允许一个类实例的多处引用。 当开发者在代码中传递这些实例时,结构体总是被赋值,而类则是被引用。这是结构体和类的最本质区别。
swift 第十一课 结构体定义model类的更多相关文章
- Swift类和结构体定义-备
Swift中的类和结构体定义的语法是非常相似的.类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下: class 类名 { 定义类的成员 } struct 结构体名 { ...
- 《从零开始学Swift》学习笔记(Day 25)——类和结构体定义
原创文章,欢迎转载.转载请注明:关东升的博客 Swift中的类和结构体定义的语法是非常相似的.类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下: class 类名 { ...
- Swift学习之类和结构体的创建
随着一步步的学习,学习到的新知识越来越多了,不管是新的还是旧的,都禁不住时间的堆积,再熟悉的知识点时间久了都会渐渐的忘记,也许这就是人们生活中一种潜在的惰性吧,看似非常熟悉的东西,等到真正要用的时候, ...
- swift 的枚举、结构体、类
一.Swift的枚举 枚举是一系相关联的值定义的一个公共的组类型,同时能够让你在编程的时候在类型安全的情况下去使用这些值.Swift中的枚举比OC中的枚举强大得多, 因为Swift中的枚举是一等类型, ...
- Swift中元组(Tuples),结构体(Struct),枚举(Enums)之间的区别
Swift有许多种存储数据方式,你可以用枚举(enums),元组(tuples),结构体(structs),类(classes),在这篇文章中我们将比较枚举.元组.结构体之间区别,首先从最简单的开始- ...
- ARM单片机的头文件如何用结构体定义地址
下面我们以ARM Cortex-M0内核单片机LPC1114的头文件lpc11xx.h文件进行说明. 1.先说两句 lpc11xx.h文件是lpc11xx系列单片机包含的头文件.这个文件的作用和51单 ...
- C#中结构体定义并转换字节数组
最近的项目在做socket通信报文解析的时候,用到了结构体与字节数组的转换:由于客户端采用C++开发,服务端采用C#开发,所以双方必须保证各自定义结构体成员类型和长度一致才能保证报文解析的正确性,这一 ...
- C语言结构体定义的几种方法
什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据 ...
- 将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct
https://groups.google.com/forum/#!topic/golang-nuts/JkvR4dQy9t4 https://golang.org/misc/cgo/gmp/gmp. ...
随机推荐
- Oracle查询表空间使用情况的一个sql
select t1.tablespace_name,curr_b/1024/1024/1024,max_b/1024/1024/1024,curr_b/max_b from(select table ...
- Java基础 FileInputStream/ FileOutputStream / 字节输入流 字节输出流实现文件的复制
FileInputStream/FileOutputStream的笔记: /**(FileInputStream/FileOutputStream四个步骤: ①声明②加载地址③read/write④c ...
- linux getpid _getpid()
getpid是一种函数,功能是取得进程识别码,许多程序利用取到的此值来建立临时文件,以避免临时文件相同带来的问题. 函数功能:取得进程识别码 相关函数:fork,kill,getpid 头文件:旧版本 ...
- MySQL安装到最后一步未响应MySQL Server Instance Configuration Wizard
MySQL安装到最后一步未响应 第一个方法: 打开C盘,并且显示隐藏文件,然后在C盘下就能找到一个文件夹叫 "ProgamData" ,打开它,删除里面的 "mys ...
- node.js中允许的app对象声明方式
伪对象形式 app = function () { console.log("我是一个初始化的app对象"); }; app.get=function () { console.l ...
- 成熟度等级CMM
软件能力成熟度模型 (Capability maturity model,CMM) CMM是目前国际上使用流行的一种软件生产过程行业标准模型,可定义.评价软件开发过程的成熟度,并提供提高软件质量的指导 ...
- maven+struts2例子
本文在开发第一个maven示例的基础上进行扩展. 第一个maven示例目录结构如下: 扩展后目录为: 打开pom.xml 在WEB-INF文件夹下新建web.xml: <?xml version ...
- Gradle 发布 Jar 到 Archiva 时提示不能 Overwriting released artifacts is not allowed
系统提示错误信息: Received status code 409 from server: Overwriting released artifacts is not allowed. 这是在 A ...
- 【概率论】3-6:条件分布(Conditional Distributions Part I)
title: [概率论]3-6:条件分布(Conditional Distributions Part I) categories: Mathematic Probability keywords: ...
- 1-4CMYK色彩模式
http://www.missyuan.com/thread-350717-1-1.html CMYK也称作印刷色彩模式,顾名思义就是用来印刷的. 只要是在印刷品上看到的图像,就是CMYK模式表现的 ...