Object-C--->Swift之(十)存储属性
2016-01-30 12:53
423 查看
计算属性相当于Object-C的getter、setter合成的属性,在Swift中结构体、类都可以定义计算属性
注意:var计算属性只能定义成变量形式
如果程序省略计算属性的set部分的形参名,程序将为该形参提供一个隐式的形参名:newValue。所以可以改为
如上面的可以改为
注意即使是只读属性也必须用var关键字
定义计算属性
[code][修饰符] var 计算属性名:属性类型{ get{ //getter方法执行体,该方法必须有返回值 } [set(形参名) { //setter方法执行体,该方法一定不能有返回值 }] }
注意:var计算属性只能定义成变量形式
[code]enum Season { case Spring,Summer,Fall,Winter var info:String { get{ print("正在执行getter方法") switch(self) { case .Spring: return "春暖花开" } default: return "此恨绵绵无绝期" } } set(newValue) { print("正在执行setter方法,传入参数为:\(newValue)") } } } var s=Season.Spring print(s.info)//访问info属性,实际就是调用对应的getter方法 s.info="秋高气爽"//对info属性赋值,实际就是调用对应的setter方法 }
再举一个类的例子
[code]class User { var first:String="" var last:String="" var fullName:String { get { return first + "-" + last } set(newValue) { var names=newValue.componentsSeparatedByString("-") self.first=names[0] self.last=name[1] } } init(first:String,last:String) { self.first=first self.last=last } } let s=User(first:"六小龄童",last:"孙悟空") print(s.fullName) s.fullName="甄子丹-悟空" print(s.first)//输出甄子丹 print(s.last)//输出悟空
setter方法简化
计算属性的setter方法总是只有一个形参,且该形参的类型与该计算属性的类型相同,因此Swift允许在定义计算属性时省略set部分的形参名。如果程序省略计算属性的set部分的形参名,程序将为该形参提供一个隐式的形参名:newValue。所以可以改为
[code]set{ var names=newValue.componentsSeparatedByString("-") self.first=name[0] self.last=name[1] }
只读的计算属性
只有get部分的话称为只读的计算属性。我们可以省略get关键字和花括号如上面的可以改为
[code] var fullName:String{ return first + "-" + last }
注意即使是只读属性也必须用var关键字
相关文章推荐
- Objective-c打僵尸小游戏练习源码
- android 属性动画之 ObjectAnimator
- Swift 类型的检査与转换(is,as,AnyObject,Any)
- 如果有两个list<Object>只取出两个中不重复的(还可以优化,这里计数器没做好,暂时使用第三变量)
- 160129关于xcode 7中object c与swift相互引用的问题。
- UiObject2 API的简单译文
- json_decode() expects parameter 1 to be string, object given
- 查询表达式和LINQ to Objects
- Animation动画详解(七)——ObjectAnimator基本使用
- 15.Object Manager
- Objective-C语法之基本数据类型
- a different object with the same identifier value was already associated with th
- 转:hibernate删除时的异常 deleted object would be re-saved by cascade (remove deleted ob
- 论文笔记:Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks
- Objective-C MD5 And SHA And HMAC-SHA
- Object-C--->Swift之(九)延迟存储属性
- JSONObject.toBean(JSONObject jsonObject, Class beanClass)时,防止时间类型为系统默认时间
- Objective-C中的Block
- tableView视差滚动
- Swift项目兼容Objective-C问题汇总