Bài 10: Dictionary trong swift - Lập trình Swift cơ bản

Đăng bởi: Admin | Lượt xem: 3162 | Chuyên mục: Swift


Dictionary

Cũng giống như trong Objective-C thì dictionary trong Swift  cũng được sử dụng để lưu trữ các giá trị và mỗi giá trị đều sẽ được truy xuất theo key tương ứng.

Kiểu dữ liệu

Để truy xuất, Dictionary sẽ lưu giá trị kèm theo một key, đa phần các kiểu dữ liệu sẽ giống nhau trong cùng một dictionary để khi biết kiểu dữ liệu của giá trị sẽ truy xuất dễ dàng hơn.

Khai báo(Declaration)

Để khai báo một dictionary bạn cần có key và value. Ví dụ:
var dictionary1: Dictionary<String, Int>

var dictionary2: [String: Int]

var dictionary3 = ["Math": 3, "Science": 8, "physics": 11]
Kiểu dữ liệu string là kiểu mà bạn sẽ thấy  đa phần key sẽ hay mang nhất, còn value là kiểu dữ liệu bất kỳ và trong cùng một dictionary phải giống nhau giữa các phần tử.
Các biến dictionary có thể thay đổi các phần tử nếu dùng var và ngược lại sẽ không thể thay đổi được nếu dùng let.
Cách chỉnh sửa và truy xuất giá trị trong mảng. Ví dụ:
let value = dictionary3["swift"]

print(value)

var dictionary4 = [0: "swift", 1: "java", 2: "php"]

let fruit = dictionary4[0]

Một số tính năng thường dùng với mảng như:

dictionary4.removeValue(forKey: 0) // Xoá phần tử trong dictionary  với key 0.

// Khởi tạo và thêm phần tử trong dictionary

var dictionary = [String: Int]()

dictionary["swift"] = 2

dictionary["java"] = 10

dictionary["php"] = 5
--> dictionary = [2: "swift", 10: "java", 5: "php"]

Cách truy cập các elements trong Dictionary

1. Truy cập trực tiếp

let someDic = ["a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9]

print(someDic["a"])
--> 1

print(someDic["h"])
--> 8

2. Dùng vòng lặp để truy cập tất cả các elements

let someDic = ["a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9]

for (key, value) in someDic {

   print("key:\(key) value:\(value)")

}

-> key: a value: 1
-> key: b value: 2
--> ...
-> key: i value: 9

Cách modify các elements trong Dictionary

1. Add thêm element

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]

someDictionary["Japan"] = "Tokyo"

print(someDictionary)

-->  ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi", "Japan": "Tokyo"]

2. Update element

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]

someDictionary["Nepal"] = "KATHMANDU"

print(someDictionary)

-->  ["Nepal":"KATHMANDU", "China":"Beijing", "India":"NewDelhi"]

Các function và properties trong Dictionary

1. isEmpty

Property có nhiệm vụ xác định dictionary có giá trị hay không, đối với trường hợp có thì bạn sử dụng return false và ngược lại sẽ là return true.
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]

print(someDictionary.isEmpty)

return: false

2. first

Ngoài ra Property cũng được sử dụng để truy cập phần tử đầu tiên của dictionary.
Vì dictionary không có thứ tự, nên .first sẽ không phải là phần tử đầu tiên mà các bạn add vào dictionary đâu nhé.
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]

print(someDictionary.first)

result: Optional((key: "China", value: "Beijing"))

Nếu dictionary empty thì sẽ return nil.

var someDict = [Int:String]()

print(someDict.first)

result: nil

3. count

Một chức năng khác nữa của Property là  return tổng elements (key:value) có trong dictionary
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]

print(someDictionary.count)

return: 3

4. keys

Property này return tất cả keys có trong dictionary
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]

let dictKeys  = Array(someDictionary.keys)

print(dictKeys)

return: ["China", "India", "Nepal"]

5. removeValue

Function này sẽ remove element ra khỏi dictionary
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]

someDictionary.removeValue(forKey: "Nepal")

print(someDictionary)

return: ["India": "NewDelhi", "China": "Beijing"]

6. filter

Sau khi được lọc bằng một điều kiện bất kỳ nào đó, các elements sẽ được filter return 
var cities = ["Delhi","Bangalore","Hyderabad"]

var distance = [2000,10,620]

let cityDistanceDict = Dictionary(uniqueKeysWithValues: zip(cities, distance))

var closeCities = cityDistanceDict.filter { $0.value < 1000 }

print(closeCities)

return: ["Hyderabad": 620, "Bangalore": 10]
Ví dụ ở đây là in ra những cities có khoảng cách < 1000
Những điều cần lưu ý
  • Khi access vào key không tồn tại trong dictionary thì value = nil
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]

let val  = someDictionary["Japan"]

print(val)

return: nil
  • Keys có sự phân biệt giữa chữ hoa và chữ thường
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]

let lowerCaseVal  = someDictionary["nepal"]

let uperCaseVal  = someDictionary["Nepal"]

print(lowerCaseVal)

print(uperCaseVal)

return:

nil

Optional("Kathmandu")
  • Default value cho Key không tồn tại
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]

let val  = someDictionary["nepal", default:"Not Found"]

print(val)

return: Not Found

Trong trường hợp trên key = "nepal" không tồn tại nên return default value là Not Found. Nếu key = "nepal" tồn tại thì sẽ return value tương ứng của key này

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi", "nepal":"aaaaa"]

let val  = someDictionary["nepal", default:"Not Found"]

print(val)

return: aaaa
Bài tiếp theo: Optional trong Swift >>
vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!