簡體   English   中英

無法將類型[[(string,string)]'的值分配給類型[[string:string]'

[英]cannot assign value of type '[(string, string)]' to type '[string : string]'

我已經聲明了這本詞典:

var arrayFrasi:[String:String] = [:]

然后在viewDidLoad中,我從數據庫中檢索數據,然后使用以下代碼對字典進行排序:

let df = NSDateFormatter()
        df.dateFormat = "dd-MM-yyyy"

        let myArrayOfTuples = self.arrayFrasi.sort{ df.dateFromString($0.0)!.compare(df.dateFromString($1.0)!) == .OrderedAscending}

但是在執行此操作時,我需要使用初始字典( arrayFrasi)

self.arrayFrasi = myArrayOfTuples

我有這個錯誤:

無法將類型[[(string,string)]'的值分配給類型[[string:string]'

我不知道為什么。 非常感謝你!

這是很合理的。 字典沒有定義的順序,因此sort返回一個元組數組。

Swift的Dictionary類型沒有定義的順序。 若要以特定順序遍歷字典的鍵或值,請在其鍵或值屬性上使用sort()方法。

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html

您需要將其映射回相同的類型

var arrayFrasi: [String: String] = [ "24-01-1991" : "VALUE" , "22-01-1991" : "VALUE" ]
let df = NSDateFormatter()
df.dateFormat = "dd-MM-yyyy"

let myArrayOfTuples = arrayFrasi.sort{ df.dateFromString($0.0)!.compare(df.dateFromString($1.0)!) == .OrderedAscending}.map { [$0.0 : $0.1] }.flatMap { $0 }
    .reduce([String:String]()) { (dict, tuple) in
        var dict = dict
        dict.updateValue(tuple.1, forKey: tuple.0)
        return dict
}

arrayFrasi = myArrayOfTuples // ["22-01-1991": "VALUE", "24-01-1991": "VALUE"]

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM