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. ...
随机推荐
- [Visual Studio] 自定义项目模板(.vsix扩展)
VS自定义项目模板:[2]创建VSIX项目模板扩展 听语音 | 浏览:1237 | 更新:2015-01-02 09:21 | 标签:软件开发 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师 ...
- Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) A. Forgetting Things
链接: https://codeforces.com/contest/1247/problem/A 题意: Kolya is very absent-minded. Today his math te ...
- 函数对话框confirm()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 16、生命周期-BeanPostProcessor原理
16.生命周期-BeanPostProcessor原理 16.1 打断点运行postProcessBeforeInitialization 可以看到先执行的顺序为: applyBeanPostProc ...
- PHP mysqli_error_list() 函数
返回最近调用函数的最后一个错误代码: <?php // 假定数据库用户名:root,密码:123456,数据库:RUNOOB $con=mysqli_connect("localhos ...
- 013_Linux驱动之_poll机制
1. 功能:poll的机制与select相似,与select在本质上没有多大差别.管理多个描写叙述符也是进行轮询,依据描写叙述符的状态进行处理,可是poll没有最大文件描写叙述符数量的限制. 2. 技 ...
- Tpcc-mysql 结果解读
原文:https://blog.csdn.net/frockee/article/details/87812329 1. 填坑经验 不要使用tidb的tpcc测试程序(非标准,tidb修改过),使 ...
- centos安装JDK、Tomcat、mysql
1.下载 jdk-8u131-linux-x64.tar.gz 下载地址: https://pan.baidu.com/s/1o8LW9eE 密码: miva 2.下载 apache-tomcat-8 ...
- CF1168C And Reachability 【构造,dp】
题目链接:洛谷 题目描述:给出$n$个数$a_i$,若$i<j$且$a_i & a_j>0$,则$i$到$j$连一条有向边,$q$次询问,询问从$l$开始是否能到达$r$. 数据范 ...
- 校庆神秘建筑(HDU 1411)
Problem 杭州电子科技大学即将迎来50周年的校庆,作为校庆委员会成员的我被上级要求设计一座神秘的建筑物来迎合校庆,因此我苦思冥想了一个月,终于设计出了一套方案,这座建筑物有点象古老埃及的金字塔, ...