更新:2018.05.24
整理了一下demo:SwiftDemo
- Swift将OC中的大部分类都变成了结构体,比如
Sring
,比如Array
,比如Dictionary
。 - 按住command点击随便一个
Int
或者Double
或者String
都会发现前面有一个struct
,结构体。使用起来变得更加简单。 - Swift中不再存在OC中的
NSMutableArray
、NSMutableString
,NSMutableDictionary
在Swift中,只通过参数名前面是let
还是var
,let
就是不可变,var
就是可变。
String
- Swfit中,String是一个有序的字符集合,字符串可以通过String类型表示,也可以表示为Character类型的集合。
let characters : [Character] = ["h","e","l","l","o"]
let hello01 = String(characters)
print(hello01)
- Swift中,拼接和操作字符串的方式与C中相似,轻量且易读,终于可以简单的使用'+'连接
let name = "hello "+"world"
每个字符串都是由独立编码的Unicode字符组成,并且提供了拥有访问这些字符在不同的Unicode表示的支持。
Swfit中,String类型与
Foundation NSString
类进行了无缝桥接。如果需要利用Cocoa
或Cocoa Touch
中的Foundation
框架实现功能,整个NSString API
都可以调用创建的任意String类型的值。也可以在任意要求传入NSString的实力作为参考的API中使用String类型作为替换。-
定义
let hello = "hello world"
let hello:String
// 也可以这样拼接 注意前面是var
var hello02 = "hello,"
hello02.append("world")
// 打印字符个数
print(hello02.characters.count)
-
截取
// 截取一个字符
print(hello01[hello01.startIndex])
// 截取一个字符
print(hello01[hello01.index(before: hello01.index(hello01.endIndex, offsetBy:-1))])
// 截取一段字符
print(hello02[hello02.index(hello02.startIndex, offsetBy: 3)...hello02.index(hello02.endIndex, offsetBy: -1)])
-
插入
hello02.insert("!", at: hello02.endIndex)
hello02.insert(contentsOf: "hai".characters, at: hello02.startIndex)
-
删除
hello02.remove(at: hello02.startIndex)
hello02.removeAll()
-
判断
// 字符串相等
if hello01 == hello02 {
print("两字符串相等")
}
// 判断前缀
if hello01.hasPrefix("hel") {
print("有hel前缀")
}
// 判断后缀
if hello01.hasSuffix("lo") {
print("有ol后缀")
}
// 判断是否为空
if hello02.isEmpty {
print("字符串为空")
}
Array
- Swfit中,数组是一种数据结构,用来存放多个类型相同的数据,数据在数组中是有序的。
- Swfit中,数组存放任意类型数据需要定义为
[Any]
- Swift中,数组依然用[]表示。
-
定义
let arr01 = ["asd","fgh","jkl","zxc"]
let arr02:[String] = ["123","456","789","0"]
let arr03:[Any] = ["let",1,2,UIView()]
let arr04 = [String]()
let arr05:NSArray = ["123","456","789"]
let arr06:NSMutableArray = ["1","2","3","4"]
arr06.contains(3) //数组中是否存在'3' 结果为:true
-
添加、插入
var arr07 = ["hello","world","!"]
// 追加
arr07.append("test")
// 插入
arr07.insert("test two", at: 1)
#打印结果
["hello", "test two", "world", "!", "test"]
-
删除
var arr08 = ["1","2","3"]
// 删除某一项
arr08.remove(at: 0)
// 全部删除
arr08.removeAll()
-
修改
var arr09 = ["4","5","6"]
arr09[0] = "7"
arr09[0...1] = ["8","9"]
print(arr09)
#打印结果
["8", "9", "6"]
-
遍历
let arr10 = ["1","2","3","4"]
for str in arr10 {
print(str)
}
for (index,value) in arr10.enumerated() {
print("Index: \(index),Valuie: \(value)")
}
#打印结果
1
2
3
4
Index: 0,Valuie: 1
Index: 1,Valuie: 2
Index: 2,Valuie: 3
Index: 3,Valuie: 4
Dictionary
- 字典是集合类型存放多个键值对,其中键是唯一的,不能重复。
- 字典中存放的键值对是无序的,写入的顺序和读取的顺序可能不同。
- 字典中存放的数据是任意类型。
- Swift中,字典和数组都用'[]'表示。
-
定义
let dict01:[String:Int] = ["A":90,"B":80,"C":70]
let dict02 = [String:String]()
let dict03 = ["A":"10","B":"20","C":"30"]
-
添加、修改
swift中字典的增加和修改:如果有key就是修改,如果没有key,就是增加
var dict04 = ["name":"Lucy","sex":"woman"]
dict04["age"] = "18"
dict04["name"] = "Lili"
-
删除
var dict05 = ["name":"Lucy","sex":"woman","age":"18"]
dict05.removeValue(forKey: "name")
dict05.removeAll()
-
遍历
var dict06 = ["name":"Lucy","sex":"woman","age":"18"]
// 检查是否为空
if dict06.isEmpty {
print("字典为空")
}
for (key,value) in dict06 {
print("Key:\(key),Value:\(value)")
}
for key in dict06.keys {
print("Key:\(key)")
}
for value in dict06.values {
print("Value:\(value)")
}
#打印结果
Key:name,Value:Lucy
Key:sex,Value:woman
Key:age,Value:18
Key:name
Key:sex
Key:age
Value:Lucy
Value:woman
Value:18
Set
- Swift中,集合
Set
可以存放多个相同类型数据。 - Set存放的数据时无序的。
- Set中存放的数据不能重复,如果重复,系统会自动删除。
let set01:Set = [1,2,3,4,5,6,7,8,8]
print(set01)
#打印结果
[2, 4, 5, 6, 7, 3, 1, 8]
- 插入、删除、遍历
var set02:Set = [1,2,3,4,5,6]
set02.insert(7)
print(set02)
set02.remove(1)
print(set02)
set02.removeFirst()
print(set02)
for i in set02.sorted() {
print(i)
}
#打印结果
[2, 4, 5, 6, 7, 3, 1]
[2, 4, 5, 6, 7, 3]
[4, 5, 6, 7, 3]
3
4
5
6
7
End
头好晕~~~