这是我正在使用的协议(protocol),
public protocol PValidationCondition: Equatable {
associatedtype T
func isValid(value: T) -> Bool
func errorMessage() -> String
}
这是我正在使用的模型:
struct PValidationElementWithConditions<T: PValidationCondition> {
let validationElement: PValidationElement
var conditions: [T] = []
}
但我想将多个对象存储在数组中,如下所示:
var validationElementsWithConditions: [String: PValidationElementWithConditions] = [:]
但是我收到以下错误:
"Cannot convert value of type '[String : PValidationElementWithConditions<_>]' to specified type '[String : PValidationElementWithConditions]'"
最佳答案
这是错误的
[String: PValidationElementWithConditions]
你必须做
[String: PValidationElementWithConditions<Type>]
其中 Type 符合 PValidationCondition
和 Equatable
从这里的错误可以清楚地看出它需要一个参数
PValidationElementWithConditions<_>
//
extension String : PValidationCondition {
public func isValid(value: String) -> Bool {
return true
}
public func errorMessage() -> String {
return ""
}
public typealias T = String
}
与
var validationElementsWithConditions: [String: PValidationElementWithConditions<String>] = [:]
关于ios - 在 Swift 中创建数组时的一般问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51787767/