2017-04-13 78 views
-1

遷移到Swift 3時出現錯誤。下面是錯誤出現的代碼。遷移到Swift 3.0時發生錯誤

func getProfileFieldValue(_ formFields:NSMutableArray,keyValue:String) -> String { 
    for key in formFields{ 
     if keyValue == key["name"] as! String{ 
      return key["value"] as! String 
     } 

    } 
    return "" 
} 

enter image description here

請在此先感謝幫助和。

回答

5

NSMutableArray不提供任何類型的信息,使用本地夫特陣列

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 
} 
+0

感謝。 它現在工作正常,第一個解決方案。 – Akash

+0

如果可能,請使用第二種解決方案。強類型系統鼓勵開發人員儘可能地使用類型。 – vadian

+0

爲什麼不返回「key [」value「]!」的值「而不是」?刪除一些武力解開總是一個不錯的選擇:) –

2

NSMutableArray不提供類型信息,所以你需要先投數組的for循環

let array = NSMutableArray(array: [1, 2, 3, 4, 5]) 
let keyValue = 3 

for item in array as! [Int] 
{ 
    if keyValue == item 
    {} 
} 
+0

更好的解決方案是完全避免使用「NSMutableArray」。 – rmaddy

+0

@rmaddy同意 - 儘可能使用現代快速課程,儘可能 – XmasRights