Swift学习记录(三)

该记录采用的是Swift 3.0版本,Xcode8.2.1,配合某机构教学视频。


七、字符串

  • 字符串在任何的开发中使用都是非常频繁的
  • OCSwift中字符串的区别
    • OC中字符串类型时NSString,在Swift中字符串类型是String
    • OC中字符串@"",Swift中字符串""
  • 使用String的原因
    • NSString 是一个OC对象,性能略差
    • String支持直接遍历
    • Swift提供了StringNSString之间的无缝转换

使用for in遍历字符串

let string = "I am you"
for character in string.characters {
    print(character)
}

Swift学习记录(三)_第1张图片

字符串之间拼接,直接使用+加号

let string1 =  "city "
let string2 = "of "
let string3 = "stars"
let song = string1 + string2 + string3
print("\(song) by Ryan Gosling")

打印结果

字符串和其他标识符之间的拼接

let age = 48
let name = "Matthew"
let height = 1.85
let info = "my name is \(name), age is \(age), height is \(height)"
print(info)

这里写图片描述

字符串的格式化: 时间

let minute = 13
let second = 04
let hour = 11
let timeString = String(format: "%02d:%02d:%02d", arguments: [hour,minute, second])
print(timeString)

Swift学习记录(三)_第2张图片

字符串的截取

  • Swift中提供了特殊的截取方式
    • 该方式非常麻烦
    • Index创建较为麻烦
  • 简单的方式是将String转成NSString来使用
    • 在标识符后加:as NSString即可

1.根据下标截取字符串

let songString = "closer to me"

// 将String类型转成NSString类型 string as NSString
let header = (songString as NSString).substring(to: 6)
let middle = (songString as NSString).substring(with: NSRange(location: 7, length: 2))
let footer = (songString as NSString).substring(from:10)

print("header:\(header) middle:\(middle) footer:\(footer)")

Swift学习记录(三)_第3张图片

2.根据字符截取字符串

  • 截取到首个符合的字符(只能是字符串元素,即字符)
let song = "Traveling Light"
let firstCharacter = song.characters.index(of: "i")!
let string = String(song.characters.prefix(upTo: firstCharacter))
print(string)

Swift学习记录(三)_第4张图片


八、数组

1.数组的初始化

  • 数组分成:可变数组和不可变数组
    • 使用let修饰的数组是不可变数组
    • 使用var修饰的数组是可变数组
// 定义一个可变数组,必须初始化才能使用
var array : [String] = [String]()

// 定义一个不可变数组
let names : [String] = ["Jennifer", "David"]
  • 在声明一个Array类型的时候可以使用下列的语句之一
var arrayM1 = Array<String>()
var arrayM2 = [String]()
  • 声明的数组需要进行初始化才能使用,数组类型往往是在声明的同时进行初始化的
// 定义时直接初始化
var arrayM = ["Jennifer", "Courteney", "David"]

// 先定义,后初始化
var arrayM : Array<String>
array = ["Jennifer", "Courteney", "David"]
  • 特殊语法
// 给数组创建10个相同的元素
var digitCounts = Array(repeating: 0, count: 10)

2.对可变数组的操作(增删改)

2.1.添加元素

arrayM.append("Matt")

2.2.删除元素

arrayM.remove(at:0)

2.3.修改元素

arrayM[1] = "Ben"

2.4.获取某一个下标值的元素

// 可变和不可变数组通用
array[0]
arrayM[0]

3.遍历数组

// 遍历数组
for i in 0..print(arrayM[i])
}
// for in方式
for name in arrayM {
    print(name)
}

// 设置遍历的区间
for name in array[0..<2] {
    print(name)
}

for i in 0..<2 {
    print(arrayM[i])
}

// 反序遍历  
for name in array.reversed() {  
    print(name)  
}  

4.数组的合并

// 数组合并
var array = ["Jennifer", "Courteney","Matt"]
var array1 = ["David", "Matthew"]
var array2 = array + array1;

九、字典

Swift 的Dictionary类型被桥接到Foundation的NSDictionary类。

1.字典类型简化语法

Swift的字典使用Dictionary定义,其中Key是字典中键的数据类型,Value是字典中对应于这些键所存储值的数据类型。

注意:字典的Key类型必须遵循Hashable协议

我们也可以用[Key: Value]这样简化的形式去创建一个字典类型。虽然这两种形式功能上相同,但是后者是首选。

// namesOfIntegers 是一个空的 [Int: String] 可变字典
var namesOfIntegers = [Int: String]()

// 定义一个不可变字典
let dict = ["name" : "Chandler"]
  • Swift中的可变和不可变字典
    • 使用let修饰的数组是不可变字典
    • 使用var修饰的数组是可变字典

2.字典的基本操作

// 添加数据
dict["phoneNumber"] = "+86 110"
dict["girlFriend"] = "Monika"

// 删除字段
dict.removeValue(forKey: "phoneNumber")

// 修改字典
dict["name"] = "Joey"

// 查询字典
dict["name"]

十、元组

// 元组的基本写法
let userInfo = ("Matthew", 48, 1.85)
userInfo.0
userInfo.1
userInfo.2

// 给每一个元素起别名
let userInfo1 = (name : "Matthew", age : 48, height : 1.85)
userInfo1.name
userInfo1.age
userInfo1.height

// 别名就是变量的名称
let (name, age, height) = ("Matthew", 48, 1.85)
name
age
height

你可能感兴趣的:(Swift学习记录(三))