一、基础语法

1.Swift无缝兼容Foundation

import UIKit
var sum = 4 * 5var str = "Hello, playground"asNSString
str.substringWithRange(NSRange(location: 0, length: 5))//var array:NSArray = [1,2,3,4]
//array.componentsJoinedByString(",")class TestObject {}let array = [1,2,"",TestObject()]//String-NSString
//Int,Float,Double,Bool以及其他数字有关的类型 - NSNumber
//Array - NSArray
//Dictionary - NSDictionary
//Set - NSSet
//AnyObject - NSObject
//Swift原生类型是对Foudation更好的补充

2.值类型和引用类型

var array1:NSMutableArray = [1,2,3]
var array2 = array1
array2.addObject(4)
array1//struct和enum定义的类型是值类型,使用class定义的为引用类型
//基本数据类型全是struct,值类型线程安全而且处理起来简单
//处理大量数据并且频繁增减元素的时候,NSMutableArray、NSMutableDictionary和NSMutableSet,其他情况Array、Dictionary和Set好一点

3.命名空间

//一个module代表一个命名空间
//主target就是一个module,创建framework和target就是新的module
//不同module中就算类名相同,也可以通过module名进行区分,不再需要给类名加上各种奇怪的前缀

4.OC调用Swift

//#import "(moduleName)-Swift.h"

5.Swift调用OC

//动态库
//import moduleName
//静态库
//moduleName-bridging-Header.h 中引入OC头文件var red:CGFloat = 0.0, green:CGFloat = 0.0, blue:CGFloat = 0.0, alpha:CGFloat = 0.0
UIColor.redColor().getRed(&red, green: &green, blue: &blue, alpha: &alpha)
red
green
blue
alpha//const Type *    UnsafePointer<Type>
//Type *          UnsafeMutablePointer<Type>
//
//int,bool和char的对应类型分别是CInt,CBool,和CChar
//内存需要自己管理

6.泛型

var num1 = 4 , num2 = 5
func swapValue<T>(inout num1:T, inout num2:T){(num1,num2) = (num2,num1)
}
//inout 表面形参和实参都改变
swapValue(&num1,num2:&num2)num1
num2//Swift的数组和字典类型都是泛型集

7.异常处理


//同步API使用异常机制:do try catch throw throws
enum Error:ErrorType {case WrongJSON
}func test() throws {do{tryNSJSONSerialization.JSONObjectWithData(NSData(), options: .AllowFragments)} catch {throwError.WrongJSON}
}
do{
trytest()
} catch Error.WrongJSON {}
//异步API使用泛型枚举
/*enum Result<T> {
case Success(T)
case Failure(NSError)
*/

二、高级语法

1.guard - 近似看成assert,退出而不是崩溃

func checkup(person:[String:String]) {guardlet id = person["id"] else {print("没有身份证,不能进入考场")return}guardlet examNumber = person["examNumber"] else {print("没有准考证,不能进入考场")return}print("您的身份证号码为\(id),准考证号码为\(examNumber)。请进入考场")
}//checkup(["id":"243566"])
//checkup(["examNumber":"2343241"])
checkup(["id":"12314","examNumber":"1235323"])

2.属性观察,设置uilabel或者constaint

let maxValue = 999
let minValue = -999var number = 0 {
willSet {print("将从\(number)变成\(newValue)")
}
didSet {ifnumber > maxValue {number = maxValue} elseifnumber < minValue {number = minValue}print("已经从\(oldValue)变为\(number)")
}
}number = 10000
number

3.Extensions,扩展:就是向一个已有的类、结构体、枚举类型或者协议类型添加新功能。这包括在没有权限获取原始代码的情况下扩展类型的能力(即逆向建模)

extensionInt {func times(closure: (() -> ())?) {ifself >= 0 {for_in0..<self {closure?()}}}
}10.times { print("something") }

4.协议扩展

extensionCustomStringConvertible {var upperDescription:String {returnself.description.uppercaseString}
}["key":"value"].upperDescription

5.map得到一个由闭包里面的返回值组成的新序列

//flatMap会把闭包中nil的值过滤掉
//filter得到一个由闭包返回值为true的序列
var result = [1,2,3,4,5].map{$0 * 2}
resultvar result2 = [1,2,3,4,5].flatMap{$0 * 2}
result2var images = (1...7).map{ UIImage(named: "image\($0).jpg")}
images.countvar images2 = (1...7).flatMap{ UIImage(named: "image\($0).jpg")}
images2.countresult = [1,2,3,4,5].filter{$0 > 2}
result

6.单例

class testObject {privatestaticlet testObject = TestObject()staticvar sharedInstance: TestObject {return testObject}privateinit() {}
}

iOS - Swift - 语法糖相关推荐

  1. 有 OC 经验的程序员快速学习 Swift 语法

    前言 苹果官方推出 Swift 语言至今,已经过了 7 年之久,Swift 也更新到了 5.5 版本, 它的语法和 API 也趋向于稳定.最近闲来无事,决定开始研究这 iOS 开发编程语言的语法.因为 ...

  2. RxSwift之路 1#Swift语法知识准备

    在开始学习 RxSwift 之前,一定要对 Swift 相关语法有所了解,否则就很难理解为什么可以这样.关于 Swift 的学习其实只要看看 Swift 的官方文档就可够了.我之前也列过一些学习资源: ...

  3. Swift翻译之-Swift语法入门 Swift语法介绍

    目录[-] Hello world - Swift 简单赋值 控制流 函数与闭包 对象和类 枚举与结构 协议和扩展 泛型 2014.6.3日,苹果公布最新编程语言Swift,Swift是一种新的编程语 ...

  4. Swift语法3.03(类型Types)

    类型 在Swift中,有两种类型:命名型类型和复合型类型.命名型类型是在定义时可以给定的特定名字的类型.命名型类型包括类,结构体,枚举和协议.例如,自定义的类MyClass的实例拥有类型MyClass ...

  5. Swift语法之 ---- ?和!区别

    转自:http://blog.sina.com.cn/s/blog_71715bf80102ux3v.html Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值, ...

  6. swift语言特性,swift语法介绍,swift使用技巧

    Swift语言特性.Swift语法介绍.Swift使用技巧 Swift是一种由苹果公司开发的编程语言,于2014年首次发布.它是一种现代.快速.安全的编程语言,用于iOS.macOS.watchOS和 ...

  7. iOS swift组件化之私有库创建及问题记录

    1.进入git创建仓库 2.终端添加spec repo pod repo add xxxxKitSpec https://github.com/xxxx/xxxxKitSpec.git 说明:xxxx ...

  8. javascript语法糖_语法糖和JavaScript糖尿病

    javascript语法糖 by Ryan Yurkanin 瑞安·尤卡宁(Ryan Yurkanin) 语法糖和JavaScript糖尿病 (Syntactic Sugar and JavaScri ...

  9. Java 中的语法糖,真甜。

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 我们在日常开发中经常会使用到诸如泛型.自动拆箱和装箱.内部 ...

最新文章

  1. ASP.NET MVC 过滤器(一)
  2. IT编辑推荐:广通Broadview IT运维管理平台
  3. 说说计算机发展史在你的印象里都有哪些内容,鱼池宣讲 | 专题采访 第二期 | 过去的一年里,你印象深刻的事情有哪些?...
  4. NOI模拟题4 Problem C: 填格子(board)
  5. 电气论文:基于遗传算法加非线性规划的水火电力系统经济调度(有程序和数据)
  6. apple watch3连android,Apple watch 可以连android手机吗?
  7. 关于SQL的基础语法(一)
  8. leetcode -- Clone Graph
  9. 返回目录中所有JPG图像的文件名列表
  10. 计算机组装维护安装光驱步骤,光驱怎么安装?教你如何正确安装光驱方法
  11. 2.4-2.8段地址x16+偏移地址=物理地址
  12. Zookeeper的事务--Transaction
  13. 采用计算机对酒店客房进行管理,酒店客房管理系统—计算机毕业设计论文.doc...
  14. 2020年淘宝直播数据分析报告
  15. git + 移动端 web 开发
  16. 使用c#建立奥运奖牌榜
  17. RSA生成公私钥并加解密
  18. matlab回车键,在Matlab中启动.exe文件后,以编程方式按一下回车键
  19. 关于移位密码的破解问题
  20. GitHub 上发现的几个好项目

热门文章

  1. putty和Xming的使用详细教程
  2. 【金三银四】微信小程序页面跳转方法总结,完整PDF
  3. C语言的memcpy和memmove
  4. 华为设备配置虚拟专用网FRR
  5. java memset函数_memset函数及注意事项
  6. apache 设置允许跨域
  7. 技巧集锦026:解锁票据锁定(保护)
  8. Swift之深入解析内存安全
  9. python机器学习minimize函数参数介绍及作用
  10. 程序员面试第一步:如何让你的简历更受青睐,阿里面试官总结了四点