Tôi đang cố gắng bọc đầu xung quanh việc khởi tạo các mảng trống trong Swift.Khởi tạo các dãy từ điển trống trong Swift
Đối với một mảng của chuỗi nó khá thẳng về phía trước:
var myStringArray: String[] = []
myStringArray += "a"
myStringArray += "b"
-> ["a", "b"]
và cho số nguyên
var myIntArray: Int[] = []
myIntArray += 1
myIntArray += 2
-> [1, 2]
nó cũng làm việc cho các loại đối tượng như đối tượng NSImage:
let path = "/Library/Application Support/Apple/iChat Icons/Flags/"
let image1 = NSImage(byReferencingFile: path + "Brazil.png")
let image2 = NSImage(byReferencingFile: path + "Chile.png")
var myImageArray: NSImage[] = []
myImageArray += image1
myImageArray += image2
-> [<NSImage 0x7fe371c199f0 ...>, <NSImage 0x7fe371f39ea0 ...>]
Tuy nhiên tôi không thể làm việc ra cú pháp để khởi tạo một dãy từ điển trống.
Tôi biết bạn có thể có một loạt các từ điển vì initialising với giá trị ban đầu hoạt động:
let myDict1 = ["someKey":"someValue"]
let myDict2 = ["anotherKey":"anotherValue"]
var myDictArray = [myDict1]
myDictArray += myDict2
-> [["someKey": "someValue"], ["anotherKey": "anotherValue"]]
EDIT: Có lỗi trong đoạn mã sau (trộn myNewDictArray và myDictArray) và khi hiệu chỉnh nó doesn' Làm việc như tôi đã nói.
như thực hiện điều này:
let myDict1 = ["someKey":"someValue"]
let myDict2 = ["anotherKey":"anotherValue"]
var myNewDictArray: AnyObject = []
myDictArray += myDict1
myDictArray += myDict2
-> [["someKey": "someValue"], ["anotherKey": "anotherValue"]]
Tuy nhiên điều này (mà bạn mong đợi cú pháp được) thất bại:
var myNewDictArray: Dictionary[] = []
với lỗi Cannot convert the expression's type 'Dictionary[]' to type 'Hashable'
Vì vậy, câu hỏi là cách chính xác để khởi tạo một mảng rỗng của các mục từ điển là gì và tại sao cú pháp này không hoạt động?
Có, tính năng này hoạt động. Bất kỳ ý tưởng tại sao có hai cách để làm điều đó? – dwkns
Swift sử dụng * kiểu suy luận * tại thời gian biên dịch, vì vậy khi khai báo một biến, bạn có thể chỉ định kiểu (như 'dictArray2' làm) hoặc gán ngay cho nó thứ gì đó mà trình biên dịch có thể tìm ra (như' dictArray3'). Dòng đầu tiên có nhiều chi tiết hơn mức cần thiết, nhưng trình biên dịch không bận tâm đến điều đó. –
tôi đã phải thay đổi trên Swift 2 ** var productImageArray: [Dictionary] = [] ** –
swiftBoy