Swift菜鸟教程

Swift基础学习归纳笔记第二波

1.循环

①for-in 循环

语法如下

for index in var {
    循环体
}

范例:

for index in 1...5 {
    print("\(index)" 乘以10为: \(index * 10)")
}

输出:

1 乘以10为 10
2 乘以10为 20
3 乘以10为 30
4 乘以10为 40
5 乘以10为 50

②注意

在C语言中常用的for循环方式在Swift 3中已经弃用
如下

for var index = 0; index < 3; ++index {
   print( "索引 [\(index)] 对应的值为 \(someInts[index])")
}

因此不需要了解这种方式,同时也不要在最新的Swift中使用该for循环方式

③while 循环

语法如下

while condition
{
   statement(s)
}

实例:

while index < 20 
{
   print( "index 的值为 \(index)")
   index = index + 1
}

④repeat...while 循环

语法如下

repeat
{
   statement(s);
}while( condition );

个人感觉和C语言中的do-while类似
实例:

repeat{
    print( "index 的值为 \(index)")
    index = index + 1
}while index < 20

2.字符串

实例化字符串,可以有两种方法
1.字符串字面量
var stringA = "Hello, World!"

2.String实例化
var stringB = String("Hello, World!")

判断字符串是否为空

可以通过属性isEmpty来判断

if stringA.isEmpty {
   print( "stringA 是空的" )
} else {
   print( "stringA 不是空的" )
}

字符串连接

字符串连接可以用字符串1 + 字符串2来实现

字符串3 = 字符串1 + 字符串2

字符串长度

可以用count属性来获取

var varA   = "www"

print( "\(varA), 长度为 \(varA.count)" )

输出结果:
www, 长度为 3

字符串比较

可以用==来比较
字符串1 == 字符串2
如下例子

if varA == varB {
   print( "\(varA) 与 \(varB) 是相等的" )
} else {
   print( "\(varA) 与 \(varB) 是不相等的" )
}

更多细节请戳这:菜鸟教程字符串

3.字符

循环遍历字符串中的字符

for ch in "ABCDEFG".characters {
    print(ch)
}

输出:

A
B
C
D
E
F
G

字符串连接字符

可以使用append方法

var varA:String = "Hello "
let varB:Character = "G"

varA.append( varB )

输出为
Hello G

4.数组

  • Swift数组使用有序列表存储同一类型的多个值
  • Swift数组会强制检测元素的类型,如果类型不同会报错
  • 变量型数组可修改,常量型数组不可修改

创建一个特定数据类型构成的空数组
var someArray:[SomeType] = []

可以通过对参数的设置对数组进行配置

example1:创建一个类型为,Int,大小为10,初始值为1的数组
var someInts = [Int](repeating: 1, count: 10)

example2:将数组初始化为特定的内容
var someInts:[Int] = [1,2,3]

修改数组

可以通过append方法或者+=来添加元素到数组末尾

intArray.append(20)  //方式1,向数组末尾添加20
intArray += [50]     //方式2,向数组末尾添加50

遍历数组

使用for-in循环来遍历所有数组中的数据项
实例:

for item in someStrs {
   print(item)
}

倘若需要顺便输出数组的index
可以使用enumerated方法来完成

for (index, item) in someStrs.enumerated() {
    print("在 index = \(index) 位置上的值为 \(item)")
}

合并数组

合并数组只能合并类型相同数组
可以使用+来合并
数组1 = 数组2 + 数组3

例子:

var intsA = [Int](repeating: 2, count:2)
var intsB = [Int](repeating: 1, count:3)

var intsC = intsA + intsB

数组长度

可以通过count属性来获取
testArray.count

判断数组是否为空

可以通过只读属性isEmpty来判断
testArray.isEmpty

5.字典

创建字典

var someDict = [KeyType: ValueType]()
范例:
创建一个空字典
var someDict = [Int: String]()
创建一个带有实例内容的字典
var busDict:[Int:String] = [504:"北京公交", 520:"武汉公交, 3:"泉州公交"]

访问字典

用过python的人都知道字典的用法,Swift字典的访问是类似的
var someVar = someDict[key]
这里也不多阐述,举个例子

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

print( "key = 2 的值为 \(someDict[2])" )
print( "key = 3 的值为 \(someDict[3])" )

输出内容为:

key = 2 的值为 Optional("Two")
key = 3 的值为 Optional("Three")

修改字典

方法 updateValue(forKey:) 增加或更新字典的内容
例子:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = someDict.updateValue("新值", forKey: 1)
var someVar = someDict[1]
print( "key = 1 旧的值 \(oldVal)" )
print( "key = 1 的值为 \(someVar)" )

输出结果:

key = 1 旧的值 Optional("One")
key = 1 的值为 Optional("新值")

上述方法太死板了,本人更喜欢下面这种简单粗暴的方法
someDict[1] = "One 新的值"

移除字典中的内容

var removedValue = someDict.removeValue(forKey: 2)
移除后再对该位置进行访问,会提示值为nil

或者直接将指定位置的值置为nil
someDict[2] = nil

遍历字典

同样使用for-in语句来遍历某个字典中的键值对

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

将字典转换为数组

可以将字典中的键值分别转化为数组
范例:

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

let dictKeys = [Int](someDict.keys)
let dictValues = [String](someDict.values)

当然类型要根据字典内容键值的内容来确定

字典键值数

使用count属性来获取

someDict.count

判断字典是否为空

使用isEmpty属性

someDict3.isEmpty

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议