迁移到Swift 3时出错。下面是出现错误的代码。
func getProfileFieldValue(_ formFields:NSMutableArray,keyValue:String) -> String {
for key in formFields{
if keyValue == key["name"] as! String{
return key["value"] as! String
}
}
return ""
}
请提前帮助和谢谢。
答案 0 :(得分:5)
NSMutableArray
不提供任何类型信息,使用原生Swift数组
func getProfileFieldValue(_ formFields:[[String:Any]], keyValue: String) -> String {
for key in formFields {
if let value = key["name"] as? String, value == keyValue {
return key["value"] as! String
}
}
return ""
}
或者词典仅包含String
值
func getProfileFieldValue(_ formFields:[[String:String]], keyValue: String) -> String {
for key in formFields {
if let value = key["name"], value == keyValue {
return key["value"]!
}
}
return ""
}
或者 swiftier
func getProfileFieldValue(_ formFields:[[String:Any]], keyValue: String) -> String {
if let profileField = formFields.first(where { $0["name"] as? String == keyValue }) {
return profileField["value"] as! String
}
return ""
}
最后防水 - 永不崩溃版本:
func getProfileFieldValue(_ formFields:[[String:Any]], keyValue: String) -> String {
guard let profileField = formFields.first(where: { $0["name"] as? String == keyValue }),
let value = profileField["value"] as? String else { return "" }
return value
}
答案 1 :(得分:2)
NSMutableArray
不提供类型信息,因此您需要在for循环之前强制转换数组
let array = NSMutableArray(array: [1, 2, 3, 4, 5])
let keyValue = 3
for item in array as! [Int]
{
if keyValue == item
{}
}