1、swift语言简单介绍
Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序。苹果目前在大力推广Swift,从Xcode8开始苹果的开发文档已经全部都是使用的swift语言。斯坦福大学的公开课目前也是使用Swift在授课.因为以后Swift必将代替OC。可见,学习好OC语言的同时,尽快掌握swift语言是很必要的。夏则资皮,冬则资絺[chī],旱则资舟,水则资车,以待乏也。未雨绸缪才是明智之举。
1.1、swift的语言特点:
1、从它的语法中能看到Objective-C、JavaScript、C#、Python等语言的影子,
2、语法简单、代码简洁、使用方便。
3、可与Objective-C混合使用(相互调用)提供了类似 Java 的名字空间(namespace)、泛型(generic)、运算符重载(operator overloading)
4、使用swift开发可以让应用开发更简单、更快、更稳定,确保最终应用有着更好的质量
2、swift语言初体验
1、从Xcode6开始出现(Swift开始出现)。翻译为:操场/游乐场,对于学习Swift基本语法非常方便,所见即所得(快速查看结果);语法特性发生改变时,可以快速查看。
2、Swift最基本的语法变化
导入框架 import UIKit(UIKit框架包含了Foundation框架)
定义标识符时,必须声明该标识符是变量还是常量 【使用 let
或者 var
通常我们先使用 let
来声明这个标识符,当我们需要赋值的时候再改为 var
变量类型】
声明标识符的格式:变量/常量关键字 名称 : 数据类型
语句结束时不需要加分号(;)
如果同一行有多个语句,则依然需要加,但是不建议一行多条语句
Swift中的打印语句:print(打印的内容),不需要使用NSLog()来打印
3、常量和变量
3.1、什么是常量和变量
在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量
使用 let
来定义常量,定义之后不可以修改
使用 var
来定义变量,定义之后可以修改
3.2、常量和变量的基本使用
当一个标识符被定义给常量的时候是不可以被修改的。
常量和变量的使用
3.3、常量和变量的使用注意
在真实使用过程中,建议先定义常量,如果需要修改再修改为变量(更加安全)
指针指向的对象不可以再进行修改.但是可以通过指针获得对象后,修改对象内部的属性
4、swift中的数据类型
4.1、Swift中常用的数据类型有
Int、Float、Double、Bool、Character、String
Array、Dictionary、元组类型(Tuple)、可选类型(Optional)
注意:数据类型的首字母都是大写的
swift中的整型和浮点型
Swift中的数据类型和OC中的数据类型一样也有:整型/浮点型/对象类型/结构体类型等等,这里主要讲解解整型和浮点型。
4.1.1整型
有符号
Int8 : 有符号8位整型
Int16 : 有符号16位整型
Int32 : 有符号32位整型
Int64 : 有符号64位整型
Int : 和平台相关(默认,相当于OC的NSInteger)
无符号
UInt8 : 无符号8位整型
UInt16 : 无符号16位整型
UInt32 : 无符号32位整型
UInt64 : 无符号64位整型
UInt : 和平台相关(常用,相当于OC的NSUInteger)(默认)
4.1.1浮点型
Float : 32位浮点型
Double : 64浮点型(默认)
5、Swift中的类型推导
Swift是强类型的语言,Swift中任何一个标识符都有明确的类型。
注意:
如果定义一个标识符时有直接进行赋值,那么标识符后面的类型可以省略。因为Swift有类型推导,会自动根据后面的赋值来决定前面的标识符的数据类型,可以通过option+鼠标左键来查看变量的数据类型。
查看数据的默认类型
6、Swift中基本运算
Swift中在进行基本运算时必须保证类型一致,否则会出错,相同类型之间才可以进行运算,因为Swift中没有隐式转换。
数据类型的转化
Int类型转成Double类型:Double(标识符)
Double类型转成Int类型:Int(标识符)
错误原因:数据的运算没有保证数据类型一致
错误
注意:swift的赋值运算符
=
是没有返回值的 所以不可以把赋值运算符作为条件语句的判断条件
7、逻辑分支
分支即if/switch/三目运算符等判断语句,通过分支语句可以控制程序的执行流程。
7.1、if分支语句
和OC中if语句有一定的区别,判断句可以不加括号()
在Swift的判断句中必须有明确的真假,不再有非0即真,必须有明确的Bool值。
Bool有两个取值:false/true
if分支的正确书写方式
7.2 三目运算符
三目运算符还是和OC中保持一致的使用方法
三目运算符的使用
7.3 switch分支
Switch作为选择结构中必不可少的语句也被加入到了Swift,但苹果对Switch进行了大大的增强,使其拥有其他语言中没有的特性。
基本用法和OC用法一致
不同之处:
switch后可以不跟()
case后可以不跟break(默认会有break)
switch分支语句
一个case判断中,可以判断多个值。多个值使用逗号隔开
使用逗号分隔
如果希望出现之前的case穿透,则可以使用关键字fallthrough
case穿透
注意:switch支持区间判断
什么是区间?
通常我们指的是数字区间:010,100200
swift中的区间常见有两种
开区间:0..<10 表示:0~9,不包括10 一般在数学中的写法(0,10) 表示不包括0和10 [0,10) 表示包括 0 不包括10 [0,10] 表示包括0 和10的闭区间
闭区间:0...10 表示:0~10
7.4 guard的使用
guard是Swift2.0新增的语法,它与if语句非常类似,它设计的目的是提高程序的可读性。guard语句必须带有else语句,它的语法如下:
当条件表达式为true时候跳过else语句中的内容,执行语句组内容。
条件表达式为false时候执行else语句中的内容,跳转语句一般是return、break、continue和throw
一般写在函数的内部。书写格式如下:
guard <#condition#> else { // 这是判断条件
<#statements#> // 不满足判断条件的执行语句
}
满足条件时执行这里的语句
guard的简单使用
8、循环语句
在开发中经常会需要循环,常见的循环有:for/while/do while。这里我们只介绍for/while,因为for/while最常见
swift循环语句swift的循环语句在swift3.0版本不支持C语言格式的循环方式。现在常用方式是使用区间,同时运算符 ++
在swift3.0中通常需要写成i += 1
特殊写法
如果在for循环中不需要用到下标i
8.2 while和do while循环
while循环
while的判断句必须有正确的真假,没有非0即真
while后面的()可以省略
do while循环
使用repeat关键字来代替了do
9、字符串
9.1字符串的简单介绍
字符串在任何的开发中使用都是非常频繁的。
OC和Swift中字符串的区别:
在OC中字符串类型时NSString,在Swift中字符串类型是String
OC中字符串@"",Swift中字符串""
使用 String 的原因
String 是一个结构体,性能更高
NSString 是一个 OC 对象,性能略差
String 支持直接遍历
Swift 提供了 String 和 NSString 之间的无缝转换
9.2、字符串的使用
字符串的截取
Swift中提供了特殊的截取方式,该方式非常麻烦,因为Index创建较为麻烦。
简单的方式是将String转成NSString来使用,在标识符后加:as NSString即可
var string = "I我 am a string"
string.characters.count // 1、获取字符串中的字符个数 包括空格
for C in string.characters { // 2、遍历字符串中的所有的字符
print(C)
}
if string.isEmpty { // 3、判断字符串是否为空
print("这是一个空字符串")
}else {
print("这不是一个空字符串")
}
/*
error: 'String' is not convertible to 'Bool'
因为swift是强类型语言
if string {
print("这不是一个空字符串")
}
*/
string = string.localizedUppercase // 4、字符串转换字符成大写字母
string = string.localizedLowercase // 5、字符串转换字符成小写字母
let stringA = "我是中文字符串"
print("\(stringA)\(string)") // 6、字符串的拼接
let stringB = stringA + string // 6.2 字符串可以直接使用加号➕来进行拼接
let numberA = 1
let numberB = 2
print("\(numberA)\(numberB)\(stringB)") // 6.3 字符串和其他类型之间的拼接
string.appending(stringA) // 6.4 可变字符串使用API的拼接方式
var URLString = "https://www.baidu.com"
(URLString as NSString).substring(to: 6) // 7、字符串的截取
(URLString as NSString).substring(with: NSMakeRange(8, 9)) // 7.2 按照范围来截取字符串
(URLString as NSString).substring(from: 17) // 7.3 从某一个下标索引开始截取
URLString.hasPrefix("https://") // 8、判断字符串是否有某一个前缀
URLString.hasSuffix(".com") // 8.2 、判断字符串是否有某一个后缀
stringA == string // 9、字符串的比较
网友评论