| 设为主页 | 保存桌面 | 手机版 | 二维码
普通会员

河南蓝鸥

教育 培训 郑州iOS培训 iOS开发培训 iOS培训

产品分类
  • 暂无分类
站内搜索
 
友情链接
您当前的位置:首页 » 供应产品 » 郑州iOS培训前沿开发语言学习
郑州iOS培训前沿开发语言学习
点击图片查看原图
产品: 浏览次数:0郑州iOS培训前沿开发语言学习 
品牌: 郑州iOS培训,iOS开发培训,河南iOS培训
单价: 面议
最小起订量:
供货总量:
发货期限: 自买家付款之日起 3 天内发货
有效期至: 长期有效
最后更新: 2016-05-03
  询价
详细信息
 **近H5比较火,但作为一个郑州iOS培训开发者你是否还记得有一个叫“Swift”的语言呢?

而这篇文章是作者在自学Swift的过程中,总结的一些难点以及需要注意的事项,对于正在自学Swift的你会有很大的帮助哟!

这在OC上是一个再简单不过的问题了,但Swift还是跟OC有很多居别的。

以前当我们自定义一个cell,然后把数据放在model里面,给cell上面的控件赋值,直接在model的setter方法里面给控件赋值就OK了。

例如像这样:

自定义cell

那么我们只需要把数据保存到model,在 cell 的 .h 文件中有个 model 的属性:

model属性

然后在 cell 的 .m 文件中 model 的 setter 方法里面给控件赋值就OK了。

setter 方法

但是在 Swift 里面要怎么去处理这个 setter 方法呢?

在 Swift 里面setter方法不能单独存在,有setter就必须有 getter,而且属性还分 存储属性 和 计算属性 。

简单来说,一个存储属性就是存储在特定类或结构体的实例里的一个常量或变量,存储属性可以是变量存储属性(用关键字var定义),也可以是常量存储属性(用关键字let定义)。

像这种

在上面的例子中,height在创建实例的时候被赋值,因为它是用 let 定义,是一个常量存储属性,所以之后无法修改它的值。

顺便提一下,在这里还有一种叫 延迟存储属性 ,延迟存储属性是指当**次被调用的时候才会计算其初始值的属性。

就像我们OC中用的懒加载。

在 Swift 里面在属性声明前使用lazy来标示一个延迟存储属性 :

或者直接

lazy var dataArr = NSMutableArray()

OK,回归正题,上面说的是存储属性,除存储属性外,类、结构体和枚举可以定义计算属性,计算属性不直接存储值,而是提供一个 getter 来获取值,一个可选的 setter 来间接设置其他属性或变量的值。

那么我们要在 model 的setter 方法给控件赋值,同样必须有getter,不然会报错,那么getter 的时候需要返回一个值,而这个时候 model 是计算属性,而且如果你直接返回 self.model ,那也同样会造成死循环,

上面这种情况运行程序会崩。

那么这时候我们需要再定义一个存储属性去保存这个值,并且在getter 方法里面返回这个存储属性,

里面的 newValue 是 setter 里面自带的,新的值都会保存到这个 newValue 里面,就相当于是 OC 里面的 _model = model:

代码如下:

@IBOutlet weak var nameLabel: UILabel!var newModel : AllShopInfoModel!var model : AllShopInfoModel {set {self.newModel = newValueself.nameLabel.text = NSString().showLanguagevalueWithSimplified(self.newModel.title_zh,traditional: self.newModel.title_ch, english:self.newModel.title_en, andCurrentLanguage: appLanguage)}get {return self.newModel}}

Swift 学习的时间不长,有什么写的不好的,或者有什么好的意见的,欢迎大家讨论!

QQ:2290909800 QQ交流群:493076664;97682894;咨询电话(Phone):0371-55397597 15838221845(手机)
地址(Address): 郑州市高新区莲花街牡丹路教育科技产业园区B座 网址(website):http://hn.lanou3g.com/

询价单
0条  相关评论