Swift之两三见(一)

作者: RandomThoughts | 来源:发表于2016-06-13 21:08 被阅读0次

1、Swift与OC的区别

// 在Swift当中没有main函数的概念;没有.m和.h文件,一个类就是一个.swift文件

// 在swift当中可以不写分号,但是如果当一行当中有多条语句的时候就必须写分号

// 在swift当中采用print函数来代替NSLog函数进行打印数据,print函数的效率要比NSLog高,而且在print函数中没有占位符的概念,直接使用"\( )"来进行参数的插入

2、Swift中的变量和常量

// 在swift中分别用 var 和 let 来表示变量和常量

// 格式 : let / var  名字: 数据类型 = 初始值

// 在swift中也可以不用明确的指出变量和常量的类型 xCode会根据你所提供的初值自行推导出具体类型

注:常量一经赋值之后就不允许改变;在swift中进行运算是需要把参与运算的量强转成同一类型,不同数据类型不能做运算,如:

var a = 10

var b = 10.2

var c = a + Int(b)

3、swift中常用的数据类型

整型:Int   浮点型:Double  布尔型:BOOL(swift中的BOOL值为true(真)和false(假))

字符型:character  字符串型:string(在swift中采用string表示一个字符串,在双引号中赋值)

4、swift中的字符串

var str = "hello"

var str1 = "world"

//长度:str.characters.count

//字符串的拼接采用 += (拼接字符使用append函数):str += str1 (打印结果为:helloworld)

//判断是否相等采用 == :str == "hello"

//字符串前缀和后缀:str.hasPrefix(前缀)   str.hasSuffix(后缀)

// 大小写转换: str.uppercaseString(大写)   str.lowercaseString(小写)

// 字符串string支持遍历:for item in str.characters

注:swift里面的字符串可以和OC里面的字符串进行相互转换:let str2 = str1 as NSString

5、swift中的数组

在swift中数组类型是Array,创建数组(字典)时必须明确指出数组里面元素的类型

var array:[string] = ["1","2","3"]

//添加元素:array.append("4")

//删除的方法

array.removeAll()

array.removeAll(keepCapacity:Bool)

array.removeAtIndex(index: Int)

array.removeFirst()

array.removeFirst(n: Int)

array.removeLast()

array.removeRange(subRange: Range)

注:

array.removeAll()删除数组并清除所占空间

array.removeAll(keepCapacity:Bool)删除数组,根据Bool的给的值来进行判断是否清除所占空间

//遍历

for item in array (普通遍历)

for (index, value) in array.enumerate()(元祖遍历)

6、swift中的字典

var dict:[String:AnyObjrct] = ["1":"a","2":"b"]

// 增加元素和更新字典

dict["3"] = "c" 如果key值存在就是一个更新的操作,如果key值不存在就是一个增加的操作

//删除

dict0.removeAtIndex(dict.indexForKey("2")!)

dict0.removeValueForKey("1")

//合并两个字典

for item in dict.keys {

dict1[item] = dict[item]

}

// 元祖遍历

for (key,value) in dict.enumerate()

7、swift中的枚举

swift中一个枚举成员不局限于关联整型数据,也没有默认值。如果枚举关联的是一个整型数据的话,系统会对枚举值根据前面的值进行累加;如果枚举关联的是基本类型中非整型数据类型的话,就必须给出所有的枚举关联值。如果一个枚举类型已经确定的话,下次赋值的时候可以通过 . 语法再次进行赋值

enum Month:String{

//    两种赋值方式

第一种//    case January, February, Match

第二种// case January = "a"

             case February = "b"

             case Match = "c"

}

var month = Month.January

month = .Match

print("month = \(month)")

print(month.rawValue)//打印枚举对应的值

8、swift中的可选类型

// 可选类型

// 概念:如果一个值可能有值,也可能为nil,那么这个变量/常量就是一个可选类型,可选类型用 ?标识出来

// 如果打印数据被Optional字样包含的话说明打印了一个可选类型

// 可选类型不能直接参与运算,参与运算之前必须强制解包,强制解包用!标示

注:在对一个可选类型进行强制解包之前必须确认这个可选值不为nil。

      在模型里面所有的基本数据类型不可以为可选类型,否则的话在字典转模型的话找不到这个key,给默认值0

var a1:Int? = 21

print(a1)

let b1 = 10

let c = a1! + b1

print(c)

9、swift中的控制流

// 控制流

 注:if后面的小括号可以省略,大括号不能省略。

       swift中if后面的条件语句没有“非0即真”的概念

/*

let a = 10

if (a > 0) {

print("a > 0")

}

*/

// 可选类型的判断 if - let

// if - let:先判断可选类型是否为空,不为空创建一个局部常量来接收此时可选类型的值,在执行代码块,否则不执行代码块

/*

let a:Int? = 10

if let b = a{

print("b = \(b)")

}

// if-let-where

// where是对定义出来的常量再做一层判断

if let c = a where c > 5 {

print("a > 5")

}

// guard 守护

// 是判断可选类型是否有值,没值的话执行else的代码块,有值的话不执行代码块,往下面执行

func demo() {

var a:Int? = 12

guard let d = a else {

print("a = nil")

return

}

print("d = \(d)")

}

demo() //调用函数

//  ?  !    ??-> 空运算标识符

// ??-->如果可选类型有值的话,会帮我们进行强制解包之后参与运算,如果为nil的话则提供一个默认值给我们

/*

var value:Int?

let value1 = (value ?? 5) + 20

print("value1 = \(value1)")

*/

// switch

// switch 后面的小括号可以省略

// case 后面的break可以不写,不会造成穿透的效果

// 默认default必须添加,而且只能添加在最后面

// case后面至少有一条执行语句,case后面的大括号可以省略不写

// switch 不再像OC那样只局限于整型的选择

/*

let score = "优"

switch score

{

case "优":

print("a = 2")

case "良" :

print("a = 3")

default:

print("a = 4")

}

let a = 10

switch a {

case 2:

print("a = 2")

case 3:

print("a = 3")

case 10:

print("a = 10")

default:

print("a = nil")

}

*/

10、swift中的循环

// 循环

/*

* for循环

*/

// for 后面的小括号不能写,大括号必须加上

/*

for i in 0...10 {//[0,10]

print(i)

}

*/

/*

for i in 0..<10 {//[0,10)

print(i)

}

*/

/*

* while循环

*/

/*

var i = 10

while i > 1 {

print(i)

i--

}

*/

注:do-while不存在,取代的是repeat-while

/*

var i = 10

repeat{

print(i)

i--

}while i > 5

*/

相关文章

网友评论

    本文标题:Swift之两三见(一)

    本文链接:https://www.haomeiwen.com/subject/sjyydttx.html