ios -- 教你如何轻松学习Swift语法(三) 完结篇
person.dog!.toy!.price = 太危险 强制解包,如果没值,直接程序崩溃
if let dog = person.dog {
if let toy = dog.toy {
toy.price =
} 这样解包虽然安全,但是太麻烦
}
person.dog?.toy?.price =
//当person.dog 为nil的时候,后面的操作就不再执行
let price = person.dog?.toy?.price
person.dog?.toy?.flying()
protocol SomeProtocol {
// 协议方法
}
protocol SportProtocol {
func playBasketball()
func playFootball()
}
class SomeClass:FirstProtocol,AnotherProtocol {
// 类的内容
// 实现协议中的方法
}
例如:
class Person : SportProtocol {
var name : String = ""
func playBasketball() {
print("打篮球")
}
func playFootball() {
print("踢足球")
}
}
class SomeClass:SomeSuperClass, FirstProtocol,AnotherProtocol {
// 类的内容
// 实现协议中的方法
}
protocol CrazySportProtocol : NSObjectProtocol {
func jumping()
}
protocol SportProtocol : CrazySportProtocol {
func playBasketball()
}
@objc protocol SportProtocol {
func playBasketball()
func playFootball()
//加optional该方法就成为可选的了
optional func jumping()
}
class Person: SportProtocol {
@objc func playBasketball() { 在方法前也要加上关键字@objc,不管是可选还是必选
}
@objc func playFootball() {
}
@objc func jumping() {
}
}


// 尾随闭包 : 如果函数的最后一个参数是一个闭包.那么可以将函数调用写成尾随闭包
//就是把闭包写到()的后面, 本来是写在()里面的
tools?.loadData() { (result) in
print("在ViewController中获取到数据:\(result)")
} // 如果函数有且只有一个参数,并且是一个闭包, 那么()也可以省略
tools?.loadData { (result) in
print("在ViewController中获取到数据:\(result)")
}

lazy var 变量: 类型 = { 创建变量代码 }()
lazy var names : [String] = {
return ["why", "yz", "lmj"]
}()
当执行到上面代码的时候,names不会被加载到内存中, 当names第一次使用时,才会被加载

//try方式 --> 手动处理异常, 并且可以获取到最终的异常结果
do { //如果有异常error有值
let regex = try NSRegularExpression(pattern: "", options: .CaseInsensitive)
} catch { //通过error拿到异常结果
print(error)
}

ios -- 教你如何轻松学习Swift语法(三) 完结篇的更多相关文章
- ios -- 教你如何轻松学习Swift语法(一)
目前随着公司开发模式的变更,swift也显得越发重要,相对来说,swift语言更加简洁,严谨.但对于我来说,感觉swift细节的处理很繁琐,可能是还没适应的缘故吧.基本每写一句代码,都要对变量的数据类 ...
- ios -- 教你如何轻松学习Swift语法(二)
前言:swift语法基础篇(二)来了,想学习swift的朋友可以拿去参考哦,有兴趣可以相互探讨,共同学习哦. 一.可选类型(重点内容) 1.什么是可选类型? 1.1在OC开 ...
- iOS开发swift语法0基础篇—————(swift技术交流群:361513739)
iOS开发之swift语法0基础篇:点击打开链接 swift技术交流QQ群361513739
- IOS之Foundation之探究学习Swift实用基础整理<一>
import Foundation //加载网络数据,查找数据的字符串 let dataurl = "http://api.k780.com:88/?app=weather.city& ...
- 一步一步学习Swift之(三):巧用AutoLayout布局
一些初学者经常在使用autoLayout时,做得效果不太理想,经常会出现界面错乱的情况. 本文章用一个小实例说明autoLayout的使用 非常的简单,只要记住 规则就可以使界面适屏布局,适配各种ip ...
- 轻松学习Ionic (三) 安装sass并在webstorm中为scss添加watcher
1. 安装Ruby 最新为 2.1.5版本,不放心的话安装 Ruby 1.9.3-p551 安装过程中注意勾选上第二项!即将Ruby加入到可执行的环境变量中去. 安装结束后在命令行中 ...
- JavaScript权威设计--jQuery,Ajax.animate,SVG(简要学习笔记二十)[完结篇]
1.$和jquery在全局命名空间中定义的唯一两个变量. 2.jquery是工厂函数,不是构造函数.他返回一个新创建的对象. 3.jquery的四种调用方式: <1>传递C ...
- 手把手教你全家桶之React(三)--完结篇
前言 本篇主要是讲一些全家桶的优化与完善,基础功能上一篇已经讲得差不多了.直接开始: Source Maps 当javaScript抛出异常时,我们会很想知道它发生在哪个文件的哪一行.但是webpac ...
- 一步一步学习Swift之(二):好玩的工具playground与swfit基础语法
playground好于在于能一边写代码一边看到输出的常量变量的值.不需要运行模拟器. 我们来试一下该工具的用法. 打开xcode6开发工具,选择Get started with a playgrou ...
随机推荐
- 原生js动画效果(源码解析)
在做页面中,多数情况下都会遇到页面上做动画效果,大部分都是用jquery来实现动画,今天正好看到一篇原生js实现动画效果的代码,特分享在此. 原文地址:http://www.it165.net/pro ...
- HDU-2084 数塔 经典dp,水
1.HDU-2084 数塔 2.链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 3.总结:从下往上推,最后归于顶点.方程为 dp[i][j] ...
- 热烈庆祝华清远见2014嵌入式系统(Linux&Android)开发就业培训课程全面升级
近日,华清远见公开宣布:2014嵌入式系统 (Linux&Android)开发就业培训课程再次升级!据悉,华清远见如今已经持续10年,一直保持课程每年2次的更新的频率.华清远见的每 次课程更新 ...
- GPIO裸机编程
作者:李老师,华清远见嵌入式学院讲师. GPIO控制技术是接口技术中最简单的一种.本章通过介绍S5PV210芯片的GPIO控制方法,让读者初步掌握控制硬件接口的方法.本章的主要内容: GPIO功能介绍 ...
- sencha 安装、学习
sencha touch 是Extjs 的手机版,Extjs是创建富客户端的AJAX应用中的重量级框架,sencha touch当然就是面向触摸设备的重量级js框架,在做基于桌面的网页时经常用的js ...
- Android基于XMPP的即时通讯1-基本对话
闲暇之余,自己写了个简单的即时通讯,基于OpenFire服务器平台. 整个项目包括两个部分,一个是服务器端,一个是android手机端: 一.关于服务器端没什么好说的,下载安装配置即可 推荐下载带ja ...
- Load Mental Ray in Maya 2015
In Maya 2015, we usually use mental ray to render our model, some new users may not see the mental r ...
- getAttribute与setAttribute用法
getAttribute和setAttribute只能用于元素节点. 1.当用getElementById获得元素节点时 /*---------------------------index.html ...
- Sqlite 数据库出现database disk image is malformed报错的解决方法
软件用的是Sqlite数据库,昨天还好好的,今天开机登录软件报错:database disk image is malformed 用Sqlite Expert Personal 重建索引,发现其中一 ...
- HDU 4358 Boring counting(莫队+DFS序+离散化)
Boring counting Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 98304/98304 K (Java/Others) ...