IOS(一)swift知识点速记

2019-05-31  本文已影响0人  天色将变
注释
打印输出
for x in 0...10{
    print("\(x) ", terminator: "")
}
//  0 1 2 3 4 5 6 7 8 9 10 
var name = "name"
var age = "1"

print("\(name)的年龄:\(age)")   //    name的年龄:1

变量类型
变量声明

var a = "ddd"
print(a)

常量声明

let a = 1
print(a)

给变量或常量添加类型标注,指定要存储的类型。

var b : Int = 1

可选类型Optional

声明:

var a: Int?   // 简写形式
var b: Optional<Int>    //  全写形式

取值 使用!,每次取值需要先判断是否为nil

var myString:String? = nil
if myString != nil {
    print(myString)    //前面做了判断 是否为nil    这里取值可以省略!
 // 或者print(myString!)     严格来写
}else{
    print("字符串为 nil")
}

可选绑定

var myString:String?
myString = "Hello, Swift!"
if let yourString = myString { // 如果myString不为nil就将值给yourString
   print("你的字符串值为 - \(yourString)")
}else{
   print("你的字符串没有值")
}
字面量

整型字面量可以是一个十进制,二进制,八进制或十六进制常量。 二进制前缀为 0b,八进制前缀为 0o,十六进制前缀为 0x,十进制没有前缀:

let a = 17           // 17 - 十进制表示
let b = 0b10001       // 17 - 二进制表示
let c = 0o21           // 17 - 八进制表示
let d = 0x11     // 17 - 十六进制表示

布尔型字面量的默认类型是 Bool。布尔值字面量有三个值,它们是 Swift 的保留关键字:

true 表示真。
false 表示假。
nil 表示没有值。
运算符
print("闭区间运算符:")
for index in 1...5 {  // 包含1 5
    print("\(index) * 5 = \(index * 5)")
}

print("半开区间运算符:")
for index in 1..<5 {  // 包含1  
    print("\(index) * 5 = \(index * 5)")
}
条件语句
循环语句
repeat
{
   statement(s);
}while( condition );
循环控制
var index = 10
switch index {
   case 100  :
      print( "index 的值为 100")
      fallthrough
   case 10,15  :
      print( "index 的值为 10 或 15")
      fallthrough
   case 5  :
      print( "index 的值为 5")
   default :
      print( "默认 case")
}
字符串

声明

var a = "aaa"
var b = String("bc")
var c = "" //空字符串
var d = String()  // 空字符串

属性

if stringA.isEmpty {
   print( "stringA 是空的" )
} else {
   print( "stringA 不是空的" )
}
var a = "aaaaa"
print(a.count)

方法

var a = "aaa"
a += "ccc"
var b = "bbb"
var c = a + b
var a = "aaa"
let b = "bbb"
var c = "cc\(a)dd\(b)"
var varA   = "Hello, Swift!"
var varB   = "Hello, World!"
if varA == varB {
   print( "\(varA) 与 \(varB) 是相等的" )
} else {
   print( "\(varA) 与 \(varB) 是不相等的" )
}
let myString: String = "256"
let myInt: Int? = Int(myString)
for ch in "Runoob".characters {
    print(ch)
}
var varA:String = "Hello "
let varB:Character = "G"
varA.append( varB )
数组 有序列表存储同一类型的多个值

数组赋给变量则,可以增删修数组元素;如果赋给常量,则数组大小内容都不可更改。

创建数组

var a = [Int]()   //  空数组
var b = [Int](repeating: 0, count: 3) // 类型为 Int ,数量为 3,初始值为 0 
var c:[Int] = [10, 20, 30]

访问数组元素

var a = [Int](repeating: 11, count: 13)
print( "第一个元素的值 \(a)" )
print( "第二个元素的值 \(a[1])" )
print( "第三个元素的值 \(a[2])" )

数组操作

var a = [Int]()
a.append(1) // 增加元素
a += [2] // 增加元素  也可成合并数组
a[1] = 3 // 修改元素

遍历数组

var c:[Int] = [10, 20, 30]
for item in c {
   print(item)
}
for (index, item) in c.enumerated() {
    print("在 index = \(index) 位置上的值为 \(item)")
}

合并数组

var a = [Int](repeating: 2, count:2)
var b = [Int](repeating: 1, count:1)
var c = a + b

数组属性

var a = [Int](repeating: 2, count:2)
print(a.count) // 数组长度
print(a.isEmpty) // 是否为空
字典

用来存储无序的相同类型数据的集合,Swift 字典会强制检测元素的类型,如果类型不同则会报错。
创建字典,赋给变量,则可增删修,赋给常量,则什么都不能变。

创建字典

var a = [Int: String]() // 空字典
var b:[Int:String] = [1:"One", 2:"Two", 3:"Three"] // 有值字典

访问字典

var b:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
print(b[1])// 访问key为1的值
print(b)  // 打印所有

修改字典

var b:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = b.updateValue("One 新的值", forKey: 1) // 存在则更新,不存在则增加
b[2]= "3333"//  直接修改指定key的值

字典内删除元素

var b:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
b.removeValue(forKey: 2) // 方法1
b[2] = nil  // 方法2

字典遍历

var b:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

for (key, value) in b {
   print("字典 key \(key) -  字典 value \(value)")
}

字典转换为数组 ,将key单独抽取出来形成数组,将value单独抽取出来形成数组

var b:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
let dictKeys = [Int](b.keys)
let dictValues = [String](b.values)

字典属性

vvar b:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
print(b.count) // 长度
print(b.isEmpty) // 是否为空
元祖

元组与数组类似,不同的是,元组中的元素可以是任意类型,使用的是圆括号。

let a = "22"
let b = 33
let c = (a,b)
print(c.a)
print(c.b)

函数中使用元祖

func minMax(array: [Int]) -> (min: Int, max: Int)? {
    if array.isEmpty { return nil }
    var currentMin = array[0]
    var currentMax = array[0]
    for value in array[1..<array.count] {
        if value < currentMin {
            currentMin = value
        } else if value > currentMax {
            currentMax = value
        }
    }
    return (currentMin, currentMax)
}
if let bounds = minMax(array: [8, -6, 2, 109, 3, 71]) {
    print("最小值为 \(bounds.min),组大值为 \(bounds.max)")
}
函数

如果没有显示指定函数返回值,隐式返回值将会是Void。
函数定义和调用

// 定义
func sitename() -> String { // 无参数
    return "大哥"
}
func runoob(site: String) { //  无返回值
    print("\(site)")
}
func runoob(site: String) -> String {
    return (site)
}
// 调用
print(runoob(site: "www.runoob.com"))

函数参数名

func sample(number: Int) {   // 这个number就是局部参数名
    print(number)
}
sample(number: 1) // 调用时也用这个
func pow(firstArg a: Int, secondArg b: Int) -> Int {// 函数体内使用ab
   var res = a
   for _ in 1..<b {
      res = res * a
   }
   print(res)
   return res
}
pow(firstArg:5, secondArg:3)  // 函数调用使用firstArg  secondArg

可变参数,可以接受零个或多个值。函数调用时,你可以用可变参数来指定函数参数,其数量是不确定的。可变参数通过在变量类型名后面加入(...)的方式来定义。

func vari<N>(members: N...){
    for i in members {
        print(i)
    }
}

参数类型:

func swapTwoInts(_ a: inout Int, _ b: inout Int) {
    let temporaryA = a
    a = b
    b = temporaryA
}
var x = 1
var y = 5
swapTwoInts(&x, &y)
print("x 现在的值 \(x), y 现在的值 \(y)")
x 现在的值 5, y 现在的值 1

函数类型,使用函数类型就像使用其他类型一样,可以自己定义函数类型

var addition: (Int, Int) -> Int = sum

定义一个叫做 addition 的变量,参数与返回值类型均是 Int ,并让这个新变量指向 sum 函数。注意,sum 和 addition 要有同样的类型。

func sum(a: Int, b: Int) -> Int {
   return a + b
}
var addition: (Int, Int) -> Int = sum
print("输出结果: \(addition(40, 89))")

函数嵌套,指的是函数内定义一个新的函数,外部的函数可以调用函数内定义的函数。

func calcDecrement(forDecrement total: Int) -> () -> Int { // 返回值是函数类型
   var overallDecrement = 0
   func decrementer() -> Int {
      overallDecrement -= total
      return overallDecrement
   }
   return decrementer   // 返回值是个函数
}
let decrem = calcDecrement(forDecrement: 30)// decrem是个函数
print(decrem())// 调用函数

本文参考 菜鸟教程 swift教程 做的笔记
https://www.runoob.com/swift/swift-tutorial.html

上一篇 下一篇

猜你喜欢

热点阅读