2017-02-09 48 views
2

我從這個question有一個字符串擴展,看起來非常簡單,只有我得到一個額外的參數錯誤。 可變給出額外參數錯誤的字符串擴展

var modelDict: [Int: [String: String]] = [:] 

擴展:

import Foundation 


extension String { 
    func contains(_ string: String, options: String.CompareOptions) -> Bool { 
     return range(of: string, options: options) != nil 
    } 
} 

用法:

let filteredDict = self.sharedDataVal.modelDict.contains(manufacturerCodeVar, options: .caseInsensitive) 

print("Filtered Array \(filteredDict)") 

任何想法,爲什麼.caseInsensitive被標記爲一個額外的ARG?

編輯基於羅布的建議,但我不認爲我還沒有得到它。

變量缺省值:

class sharedData { 

    static let sharedInstance = sharedData() 
    struct model{ 
     var id: String 
     var modelName: String 
     var modelNumber: String 
     var manuShort: String 
     var phiTypeCode: String 
     var phiTypeDescription: String 
    } 

    var modelDictTest:   [Int: [model]] = [:] 
} 

裝入詞典:

let modelID    = recordInfo["id"] as? String 
    let modelName   = recordInfo["modelname"] as? String 
    let modelNumber   = recordInfo["modelnumber"]as? String 
    let modelManuShort  = recordInfo["manu_short"]as? String 
    let modelPhiTypeCode  = recordInfo["phitypecode"]as? String 
    let modelPhiDescription = recordInfo["phitypedescription"]as? String 

    let localModelDict = sharedData.model(id: modelID!, modelName: modelName!, modelNumber: modelNumber!, manuShort: modelManuShort!, phiTypeCode: modelPhiTypeCode!, phiTypeDescription: modelPhiDescription!) 

用法:

let filteredDict = self.sharedDataVal.modelDictTest.contains(manufacturerCodeVar, options: .caseInsensitive) 

仍然得到同樣的錯誤,但我相信我不是正在加載結構int modelDictTest正確

+0

'modelDict'是什麼類型? –

+0

我猜'modelDict'是一個數組,因此你不能調用你的'contains'方法,而是隻有一個參數的數組。 –

+0

除非你的'modelDict'不是String,否則你不能使用'contains'方法。 – ridvankucuk

回答

3

modelDict是類型[Int: [String: String]]。您已在String上撰寫了附加信息。這沒有關係。

相反,您將從Sequence獲得標準contains(_:),該參數沒有options參數。

作爲一般規則,如果你有一個像類型和[Int: [String: String]]你發現自己想創造這種類型的擴展名,你真的打算讓model[Int: [String: String]]一個結構。然後你可以添加方法,並且不需要擴展。

+0

是有道理的。正如你所看到的,我對這個=是相當新的)。你會碰巧有一個例子,或者將我指向這種類型的Dictionary的結構的例子。 'modelDic'被定義爲一個全局共享變量,並不在我嘗試使用過濾器的類中。 – JLanders

+0

這可能幫助:https://www.youtube.com/watch?v=_S6UOrwS-Tg&feature=youtu.be最主要的一點就是隻讓你的模型自身的類型(結構或類)。然後添加你需要的方法。在內部它可能有一個字典像你當前的'modelDict',但是調用者不必關心這個。你可以創建一個包含'(_:選項:)'方法爲您'Model'類型,如果它可以做任何它與它的內部字典需要。 –

+0

在我上面編輯的問題中做了一個嘗試。不要以爲我得到它。 = / – JLanders

相關問題