Swift语法基础入门二(数组, 字典, 字符串)

Swift语法基础入门二(数组, 字典, 字符串)

数组(有序数据的集) *格式 : [] / Int / Array()

  • let 不可变数组
  • var 可变数组 注意:
  • 不需要改变集合的时候创建不可变集合是很好的实践。如此 Swift 编译器可以优化我们创建的集合。
// 声明数组
let arr1: Array<Int>
// 推荐
let arr2: [Int]
arr2 = [10, 20] // 先定义再初始化
//arr2 = [30, 40]

var arr3: [Double]
arr3 = [10.1, 10.2]
arr3 = [8.1, 9.0]


// 定时的同时初始化
let arr4 = [10, 20, 30]
var arr5 = [10.1, 10.2, 10.3]

// 取值
arr5[0]

// 遍历
for item in arr5 {
    print(item)
}

for (xxx, ooo) in arr5.enumerate() {
    print(xxx)
    print(ooo)
}

// 添加
arr5.append(9.1)

// 删除
arr5.removeAtIndex(1)
arr5

arr5.removeAll()

// 合并
var arr6 = [1, 3, 5]
var arr7 = [2, 4, 6]
//arr6 += arr7
arr6 += arr7[0..<2]


// 初始化一个带默认值的数组
var arr8 = Array(count: 5, repeatedValue: 0)


//数组如何分配存储空间, 按照2的倍数来分配
var arr9 = [Int]()
arr9.capacity
arr9.append(10)
arr9.capacity
arr9.append(11)
arr9.capacity
arr9.append(12)
arr9.capacity
arr9.append(13)
arr9.capacity
arr9.append(15)
arr9.capacity

字典(无序数据集)

  • Swift 的Dictionary类型被桥接到Foundation的NSDictionary类。
  • 格式 [:] / Dictionary()
  • let 不可变字典
  • var 可变字典

注意:

  • 一个字典的Key类型必须遵循Hashable协议
// 声明字典
let dict: [String: Double]

// 初始化字典
dict = ["score": 99.9]
//dict = ["age": 30]

// 定义空字典
let dict1 = [String: Int]()

// 定义有值的字典
// [String : NSObject] 类型是做iOS开发中最最常见的类型
var dict2 = ["name": "lnj", "age": 31, "score": 59.5]

// 获取
dict2["name"]

// 增加
// 只要字典中没有对应的key就会新增
dict2["rank"] = 1
dict2

// 删除
dict2.removeValueForKey("rank")
dict2

// 遍历
for key in dict2.keys
{
    print(key)
}

for value in dict2.values
{
    print(value)
}

for (key, value) in dict2
{
    print(key)
    print(value)
}

// 合并
var dict3 = ["name": "lnj", "age": 31]
var dict4 = ["rank": 1, "score": 99.9]
for (key, value) in dict4 {
    dict3[key] = value
}
dict3

字符串

  • Swift 的String类型与 Foundation NSString类进行了无缝桥接
  • OC语言中的字符串也是以\0结尾, Swift不是
  • OC中字符串是一个对象, Swift中使用String是一个结构体,效率更高, 支持遍历 注意
  • Swift 的String类型是值类型。 如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作,或在函数/方法中传递时,会进行值拷贝。 任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作
let str = "xmg\0lnj"
for ch in str.characters {
    print(ch)
}

// 拼接
var str1 = "xmg"
var str2 = "nx"
str1 += str2
str1

// 插值
let name = "lnj"
let age = 31
let result = "name = \(name), age = \(age)"


// 格式化
//01.png
//02.png
//...
//10.png
for i in 0...5
{
    let name = String(format: "%02d.png", arguments: [i])
    print(name)
}

// 截取
let str3 = "com.520it.xmg"
// 截取xmg
// 注意: Swift中截取字符串的方法, 接收的参数和OC中不一样
// 前期, 为了大家开发方便, 建议转换为NSString之后再截取
// 转换
let str4 = str3 as NSString
let result2 = str4.substringFromIndex(10)

//Swift字符串中的 .startIndex ,用于获取字符串中第一个字符的位置
//Swift字符串中的 .endIndex, 用于获取字符串中最后一个字符串`下一位`的位置
let result3 = str3.substringFromIndex(str3.endIndex.advancedBy(-3))
let result4 = str3.substringFromIndex(str3.startIndex.advancedBy(10))

end

posted on 2016-01-20 00:00  演员i  阅读(234)  评论(0编辑  收藏  举报

导航