swift语言(swift3.0)基础知识(一)

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后面的()可以省略

while循环语句

do while循环
使用repeat关键字来代替了do

repeat--While循环

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、字符串的比较
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容