Studying-Swift :Day01
学习地址:http://www.rm5u.com/ 或 http://www.runoob.com/
- 如果创建的是 OS X playground 需要引入 Cocoa; 如果我们想创建 iOS playground 则需要引入 UIKit .
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("你的字符串没有值")
}- 整型字面量可以是一个十进制,二进制,八进制或十六进制常量。 二进制前缀为 0b,八进制前缀为 0o,十六进制前缀为 0x,十进制没有前缀
let decimalInteger = // 17 - 十进制表示
let binaryInteger = 0b10001 // 17 - 二进制表示
let octalInteger = 0o21 // 17 - 八进制表示
let hexadecimalInteger = 0x11 // 17 - 十六进制表示 注意:Swift中的字母采用的是Unicode编码[1]。Unicode叫做统一编码制,它包含了亚洲文字编码,如中文、日文、韩文等字符,甚至是我们在聊天工具中使用的表情符号
如果一定要使用关键字作为标识符,可以在关键字前后添加重音符号(`)- 浮点型字面量的默认推导类型为 Swift 标准库类型中的 Double,表示64位浮点数。
十进制浮点型字面量 :1.25e2 表示 1.25 ⨉ 10^2,也就是 125.0;同样,1.25e-2 表示 1.25 ⨉ 10^-2,也就是 0.0125。
十六进制浮点型字面量:0xFp2 表示 15 ⨉ 2^2,也就是 60;同样,0xFp-2 表示 15 ⨉ 2^-2,也就是 3.75。
eg: 浮点型字面量允许使用下划线 _ 来增强数字的可读性,下划线会被系统忽略,因此不会影响字面量的值。同样地,也可以在数字前加 0,并不会影响字面量的值。 字符串型字面量:
转移字符 含义 \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.
- 指针最优,单目运算优于双目运算。如正负号。
- 先乘除(模),后加减。
- 先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7 等价于 (1 << (3 + 2))&7
- 逻辑运算最后计算
运算符类型 运算符 结合方向 表达式运算 () [] . expr++ expr-- 左到右 一元运算符 * & + - ! ~ ++expr --expr
* / %
+ -
>> <<
< > <= >=
== !=
右到左 位运算符 &
^
|
&&
||
左到右 三元运算符 ?: 右到左 赋值运算符 = += -= *= /= %= >>= <<= &= ^= |= 右到左 逗号 , 左到右 - Swift 条件语句
语句 描述 if 语句 由一个布尔表达式和一个或多个执行语句组成。 if 语句 后可以有可选的 else 语句, else 语句在布尔表达式为 false 时执行。 if 后可以有可选的 else if...else 语句, else if...else 语句常用于多个条件判断。 你可以在 if 或 else if 中内嵌 if 或 else if 语句。 switch 语句允许测试一个变量等于多个值时的情况。 - Swift 循环
循环类型 描述 遍历一个集合里面的所有元素,例如由数字表示的区间、数组中的元素、字符串中的字符。 用来重复执行一系列语句直到达成特定条件达成,一般通过在每次循环完成后增加计数器的值来实现。 运行一系列语句,如果条件为true,会重复运行,直到条件变为false。 类似 while 语句区别在于判断循环条件之前,先执行一次循环的代码块。 控制语句 描述 告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。 中断当前循环。 如果在一个case执行完后,继续执行下面的case,需要使用fallthrough(贯穿)关键字。 - Swift 字符串
创建字符串:你可以通过使用字符串字面量或 String 类的实例来创建一个字符串: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 =
let constA =
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 !=
比较两个字符串是否不相等。
- Swift 字符(Character)
Swift 的字符是一个单一的字符字符串字面量,数据类型为 Character: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)") - Swift 数组
创建数组:
可以使用构造语法来创建一个由特定数据类型构成的空数组:
var someArray = [someType]()创建一个初始化大小数组的语法:
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属性来计算数组元素个数;isEmpty属性:可以通过只读属性 isEmpty 来判断数组是否为空,返回布尔值;
运算符优先级:
Studying-Swift :Day01的更多相关文章
- swift:高级运算符(位运算符、溢出运算符、优先级和结合性、运算符重载函数)
swift:高级运算符 http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和 ...
- iOS8 Core Image In Swift:视频实时滤镜
iOS8 Core Image In Swift:自己主动改善图像以及内置滤镜的使用 iOS8 Core Image In Swift:更复杂的滤镜 iOS8 Core Image In Swift: ...
- iOS8 Core Image In Swift:人脸检测以及马赛克
iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用 iOS8 Core Image In Swift:更复杂的滤镜 iOS8 Core Image In Swift:人脸 ...
- iOS8 Core Image In Swift:更复杂的滤镜
iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用 iOS8 Core Image In Swift:更复杂的滤镜 iOS8 Core Image In Swift:人脸 ...
- iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用
iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用 iOS8 Core Image In Swift:更复杂的滤镜 iOS8 Core Image In Swift:人脸 ...
- Swift:UIKit中Demo(一)
关于Swift的基本概念及语法知识.我在前面的章节中已经介绍了非常多.这一节和下一节主要有针对性的解说Swift在实际UIKit开发中的使用场景及注意点.先来看看Demo的终于效果图. Demo分析: ...
- 杂项-语言-Swift:Swift
ylbtech-杂项-语言-Swift:Swift Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于 ...
- Swift:闭包
一.闭包的介绍 闭包表达式(Closure Expressions) 尾随闭包(Trailing Closures) 值捕获(Capturing Values) 闭包是引用类型(Closures Ar ...
- swift:谈谈swift几种常见属性的区别
一.前奏 Swift作为一门新语言,经过几年的发展,逐渐趋于完善,目前已经更新到3.0版本,它汇集许多其他语言的特点,例如JS.Paython.C++等,完全区别于OC.个人感觉它没有完全的OOP和O ...
- Swift:subscript
本文转载自:http://blog.csdn.net/sinat_27706697/article/details/47122137 感谢作者:秋恨雪 通常情况下,我们在使用数组(Array)或字典( ...
随机推荐
- Struts2(十六)Json
一.JSON Json就是浏览器和服务器之间交换数据的一种轻量级对象 javaSctipt中类似的对象操作 $(function() { var person = { "name" ...
- iOS--九宫格奥秘(UIView)(arc4random)
下面程序主要实现,九宫格的模型,每个小UIView的颜色随机产生的,用到了 arc4random函数: ; ; ; ; ; i<; i++) { ; j<; j++) { UIView * ...
- 如何写BaseDomain
上图摘自<Spring3.x企业应用开发实战> 提到了使用org.apache.commons.lang3.builder ToStringBuilder进行toString方法的统一. ...
- (传输层)TCP协议
目录 首部格式数据单位特定注意自动重传请求ARQ具体实现发送缓存接收缓存滑动窗口确认丢失和确认迟到超时重传时间选择报文段的发送时机运输连接发送TCP请求客户端拥塞处理相关概念避免拥塞具体实现TCP 的 ...
- IPv4中IP地址分类
分三个部分进行讲述: 1 五类IP 2 特殊用途的IP 3 私有IP 1 五类IP IPV4简单粗暴地把IP地址分为五类.分类方法如下图所示: 也就是说,分为以下几类: A: 0.0.0.0-127. ...
- [QualityCenter]设置工作流脚本-新建缺陷时字段自动生成
需求:新建缺陷时,自动生成缺陷状态.检查者和检查日期的值. 在脚本编辑器找到Defects_Bug_New函数,然后填写以下代码: Sub Defects_Bug_New On Error Re ...
- Spring-2-B Save the Students(SPOJ AMR11B)解题报告及测试数据
Save the Students Time Limit:134MS Memory Limit:0KB 64bit IO Format:%lld & %llu Descri ...
- 如何延长windows评估版的方法
在软件的开发测试,通常使用的是windows评估版本.但是有时候它的使用期限不满足你的需求.所以你可以用一下方法来延长评估版的时间. 延長使用期限 跟 Windows Server 2008 延長使用 ...
- 匿名PL/SQL
立此存照 匿名PL/SQL 语法结构:PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL程序包含了一个或多个逻辑块,每一块都可以划分3个部分.变量在使用前必须声明,P ...
- 第一章 Mysql 简介及安装和配置
Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一. ...