我有一个来自此 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 被标记为额外参数吗?
根据 Rob 的建议进行了编辑,但我认为我还没有得到它。
变量定义:
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)
仍然遇到相同的错误,但我确信我没有掌握正确加载 Struct int modelDictTest
最佳答案
modelDict
的类型为 [Int: [String: String]]
。您已经编写了 String
的扩展。这没有关系。
相反,您将从 Sequence
获取标准 contains(_:)
,它没有 options
参数。
作为一般规则,如果您有一个类似 [Int: [String: String]]
的类型,并且您发现自己想要为该类型创建扩展,那么您确实打算创建 model
一个有一个[Int: [String: String]]
的结构。然后您只需向其添加方法即可,不需要扩展。
关于ios - 字符串扩展给出额外参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42138965/