标签:
学习地址:http://www.rm5u.com/ 或 http://www.runoob.com/
iPhone或iTouch的宽为320像素,高为480像素,状态栏高为20像素,toobar高为44像素,tabbar高为49像素,导航栏高为44像素。
typealias:类型别名对当前的类型定义了另一个名字;
Swfit语言定义后缀?作为命名类型Optional(可选)的简写;
var optionalInteger: Int? //或者 var optionalInteger: Optional<Int>
强制解析:当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值。
var myString:String? myString = "Hello, Swift!" if myString != nil { // 强制解析 print( myString! ) } else { print("myString 值为 nil") }
注意:使用!来获取一个不存在的可选值会导致运行时错误。使用!来强制解析值之前,一定要确定可选包含一个非nil的值。
自动解析:你可以在声明可选变量时使用感叹号(!)替换问号(?)。
var myString:String! myString = "Hello, Swift!" if myString != nil { print(myString) } else { print("myString 值为 nil") }
可选绑定:使用可选绑定(optional binding)来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。
if let constantName = someOptional { statements } // example : var myString : String? myString = "Hello, Swift!" if let yourString = myString { print("你的字符串值为 - \(yourString)") } else { print("你的字符串没有值") }
let decimalInteger = 17 // 17 - 十进制表示 let binaryInteger = 0b10001 // 17 - 二进制表示 let octalInteger = 0o21 // 17 - 八进制表示 let hexadecimalInteger = 0x11 // 17 - 十六进制表示
注意:Swift中的字母采用的是Unicode编码[1]。Unicode叫做统一编码制,它包含了亚洲文字编码,如中文、日文、韩文等字符,甚至是我们在聊天工具中使用的表情符号
如果一定要使用关键字作为标识符,可以在关键字前后添加重音符号(`)
字符串型字面量:
转移字符 | 含义 |
---|---|
\0 | 空字符 |
\\ | 反斜线 \ |
\b | 退格(BS) ,将当前位置移到前一列 |
\f | 换页(FF),将当前位置移到下页开头 |
\n | 换行符 |
\r | 回车符 |
\t | 水平制表符 |
\v | 垂直制表符 |
\‘ | 单引号 |
\" | 双引号 |
\000 | 1到3位八进制数所代表的任意字符 |
\xhh... | 1到2位十六进制所代表的任意字符 |
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
指定 A = 0011 1100 ; B = 0000 1101
运算符 | 描述 | 图解 | 实例 |
---|---|---|---|
& | 按位与。按位与运算符对两个数进行操作,然后返回一个新的数,这个数的每个位都需要两个输入数的同一位都为1时才为1。 | (A & B) 结果为 12, 二进制为 0000 1100 | |
| | 按位或。按位或运算符|比较两个数,然后返回一个新的数,这个数的每一位设置1的条件是两个输入数的同一位都不为0(即任意一个为1,或都为1)。 | (A | B) 结果为 61, 二进制为 0011 1101 | |
^ | 按位异或. 按位异或运算符^比较两个数,然后返回一个数,这个数的每个位设为1的条件是两个输入数的同一位不同,如果相同就设为0。 | (A ^ B) 结果为 49, 二进制为 0011 0001 | |
~ | 按位取反运算符~对一个操作数的每一位都取反。 | (~A ) 结果为 -61, 二进制为 1100 0011 in 2‘s complement form. | |
<< | 按位左移。左移操作符(<<)将操作数的所有位向左移动指定的位数。 |
下图展示了11111111 << 1(11111111 左移一位)的结果。蓝色数字表示被移动位,灰色表示被丢弃位,空位用橙色的0填充。 |
A << 2 结果为 240, 二进制为 1111 0000 |
>> | 按位右移。右移操作符(<<)将操作数的所有位向又移动指定的位数。 |
下图展示了11111111 >> 1(11111111 右移一位)的结果。蓝色数字表示被移动位,灰色表示被丢弃位,空位用橙色的0填充。 |
A >> 2 结果为 15, 二进制为 0000 1111 |
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算,指定右边操作数赋值给左边的操作数。 | C = A + B 将 A + B 的运算结果赋值给 C |
+= | 相加后再赋值,将左右两边的操作数相加后再赋值给左边的操作数。 | C += A 相当于 C = C + A |
-= | 相减后再赋值,将左右两边的操作数相减后再赋值给左边的操作数。 | C -= A 相当于 C = C - A |
*= | 相乘后再赋值,将左右两边的操作数相乘后再赋值给左边的操作数。 | C *= A 相当于 C = C * A |
/= | 相除后再赋值,将左右两边的操作数相除后再赋值给左边的操作数。 | C /= A 相当于 C = C / A |
%= | 求余后再赋值,将左右两边的操作数求余后再赋值给左边的操作数。 | C %= A 相当于 C = C % A |
<<= | 按位左移后再赋值 | C <<= 2 相当于 C = C << 2 |
>>= | 按位右移后再赋值 | C >>= 2 相当于 C = C >> 2 |
&= | 按位与运算后赋值 | C &= 2 相当于 C = C & 2 |
^= | 按位异或运算符后再赋值 | C ^= 2 相当于 C = C ^ 2 |
|= | 按位或运算后再赋值 | C |= 2 相当于 C = C | 2 |
运算符 | 描述 | 实例 |
---|---|---|
闭区间运算符 | 闭区间运算符(a...b)定义一个包含从a到b(包括a和b)的所有值的区间,b必须大于等于a。 闭区间运算符在迭代一个区间的所有值时是非常有用的,如在for-in循环中: | 1...5 区间值为 1, 2, 3, 4 和 5 |
半开区间运算符 | 半开区间(a..<b)定义一个从a到b但不包括b的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。<="" td=""> | 1..< 5 区间值为 1, 2, 3, 和 4 |
a ? b : c) -- 如果a为true,值为b,否则为c.
运算符类型 | 运算符 | 结合方向 |
---|---|---|
表达式运算 | () [] . expr++ expr-- | 左到右 |
一元运算符 |
* & + - ! ~ ++expr --expr * / % + - >> << < > <= >= == != |
右到左 |
位运算符 |
& ^ | && || |
左到右 |
三元运算符 | ?: | 右到左 |
赋值运算符 | = += -= *= /= %= >>= <<= &= ^= |= | 右到左 |
逗号 | , | 左到右 |
语句 | 描述 |
---|---|
if 语句 由一个布尔表达式和一个或多个执行语句组成。 | |
if 语句 后可以有可选的 else 语句, else 语句在布尔表达式为 false 时执行。 | |
if 后可以有可选的 else if...else 语句, else if...else 语句常用于多个条件判断。 | |
你可以在 if 或 else if 中内嵌 if 或 else if 语句。 | |
switch 语句允许测试一个变量等于多个值时的情况。 |
循环类型 | 描述 |
---|---|
遍历一个集合里面的所有元素,例如由数字表示的区间、数组中的元素、字符串中的字符。 | |
用来重复执行一系列语句直到达成特定条件达成,一般通过在每次循环完成后增加计数器的值来实现。 | |
运行一系列语句,如果条件为true,会重复运行,直到条件变为false。 | |
类似 while 语句区别在于判断循环条件之前,先执行一次循环的代码块。 |
控制语句 | 描述 |
---|---|
告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。 | |
中断当前循环。 | |
如果在一个case执行完后,继续执行下面的case,需要使用fallthrough(贯穿)关键字。 |
import UIKit // 使用字符串字面量 var stringA = "Hello, World!" print( stringA ) // String 实例化 var stringB = String("Hello, World!") print( stringB )
空字符串:你可以使用空的字符串字面量赋值给变量或初始化一个String类的实例来初始值一个空的字符串。 我们可以使用字符串属性 isEmpty 来判断字符串是否为空:
import UIKit // 使用字符串字面量创建空字符串 var stringA = "" if stringA.isEmpty { print( "stringA 是空的" ) } else { print( "stringA 不是空的" ) } // 实例化 String 类来创建空字符串 let stringB = String() if stringB.isEmpty { print( "stringB 是空的" ) } else { print( "stringB 不是空的" ) }
字符串常量:你可以将一个字符串赋值给一个变量或常量,变量是可修改的,常量是不可修改的。
字符串中插入值:字符串插值是一种构建新字符串的方式,可以在其中包含常量、变量、字面量和表达式。 您插入的字符串字面量的每一项都在以反斜线为前缀的圆括号中:
import UIKit var varA = 20 let constA = 100 var varC:Float = 20.0 var stringA = "\(varA) 乘以 \(constA) 等于 \(varC * 100)" print( stringA )
字符串连接:字符串可以通过 + 号来连接。
字符串长度:字符串长度使用 String.characters.count 属性来计算
字符串比较:可以使用 == 来比较两个字符串是否相等
Unicode 字符串:Unicode 是一个国际标准,用于文本的编码,Swift 的 String 类型是基于 Unicode建立的。你可以循环迭代出字符串中 UTF-8 与 UTF-16 的编码,实例如下:
import UIKit var unicodeString = "学习教程" print("UTF-8 编码: ") for code in unicodeString.utf8 { print("\(code) ") } print("\n") print("UTF-16 编码: ") for code in unicodeString.utf16 { print("\(code) ") }
字符串函数以及运算符:
序号 | 函数/运算符 & 描述 |
---|---|
1 |
isEmpty 判断字符串是否为空,返回布尔值 |
2 |
hasPrefix(prefix: String) 检查字符串是否拥有特定前缀 |
3 |
hasSuffix(suffix: String) 检查字符串是否拥有特定后缀。 |
4 |
Int(String) 转换字符串数字为整型。 实例: let myString: String = "256"
let myInt: Int? = Int(myString)
|
5 |
String.characters.count 计算字符串的长度 |
6 |
utf8 您可以通过遍历 String 的 utf8 属性来访问它的 UTF-8 编码 |
7 |
utf16 您可以通过遍历 String 的 utf8 属性来访问它的 UTF-16 编码 |
8 |
unicodeScalars 您可以通过遍历String值的unicodeScalars属性来访问它的 Unicode 标量编码. |
9 |
+ 连接两个字符串,并返回一个新的字符串 |
10 |
+= 连接操作符两边的字符串并将新字符串赋值给左边的操作符变量 |
11 |
== 判断两个字符串是否相等 |
12 |
< 比较两个字符串,对两个字符串的字母逐一比较。 |
13 |
!= 比较两个字符串是否不相等。 |
import UIKit let char1: Character = "A" let char2: Character = "B" print("char1 的值为 \(char1)") print("char2 的值为 \(char2)")
注意:如果想在 Character(字符) 类型的常量中存储更多的字符,则程序执行会报错。
Swift 中不能创建空的 Character(字符) 类型变量或常量。
遍历字符串中的字符:Swift 的 String 类型表示特定序列的 Character(字符) 类型值的集合; 每一个字符值代表一个 Unicode 字符;您可通过for-in循环来遍历字符串中的characters属性来获取每一个字符的值:
import UIKit for ch in "Hello".characters { print(ch) }
字符串连接字符:使用 String 的 append() 方法来实现字符串连接字符:
import UIKit var varA:String = "Hello " let varB:Character = "G" varA.append( varB ) print("varC = \(varA)")
创建一个初始化大小数组的语法:
var someArray = [someType](count: NumberofElements, repeatedValues: InitialValue)
创建一个类型为Int,大小为3,初始值为0的空数组:
var someInts = [Int](count: 3, repeatedValues: 0)
创建含有三个元素的数组:
var someInts:[Int] = [10,20,30]
访问数组:我们可以根据数组的索引来访问数组的元素:
var someVar = someArray[index]
修改数组:可以使用 append() 方法或者赋值运算符 += 在数组末尾添加元素,如下所示,我们初始化一个数组,并向其添 加元素,也可以通过索引修改数组元素的值。
遍历数组:可以使用for-in循环来遍历所有数组中的数据项,如果我们同时需要每个数据项的值和索引值,可以使用 String 的 enumerate() 方法来进行数组遍历:import UIKit var someStrs = [String]() someStrs.append("Apple") someStrs.append("Amazon") someStrs.append("Runoob") someStrs += ["Google"] for (index, item) in someStrs.enumerate() { print("在 index = \(index) 位置上的值为 \(item)") }
合并数组:我们可以使用加法操作符(+)来合并两种已存在的相同类型数组。新数组的数据类型会从两个数组的数据类型中 推断出来。
Count属性:可以使用count属性来计算数组元素个数;
标签:
原文地址:http://www.cnblogs.com/ifish1990/p/5819003.html