2017-01-25 3 views
1

ich meinen Code von schnellen 2,1 bis swift 3 verändert und ich bin einige Abfragen in der Syntax für diese FehlerWerte von Typ haben kein Mitglied Wert Swift 3 gibt Fehler

Fehler 1 zugewandt: Wert des Typs hat kein Mitglied Wert

Alamofire.request(url).responseJSON() { 
      (JSON) in 
      switch JSON.result { 
      case .success(let data): 
      let user_id=String(data.value(forKey: "UserLoginResult")?.value(forKey: "UserID") as! Int) 

, wie ich die gleicht es 2

Fehler

1 mehr Fehler ist auch auflösen kann: Binäre Operatoren .. < kann nicht auf Operanden vom Typ Int und Int angewandt werden?

var serviceProvicedListArray:NSMutableArray? = NSMutableArray() 

let resultObjectItems = self.serviceProvicedListArray!.value(forKey: "lstActType") 

for i in 0..<Int(resultObjectItems[0])!{ 

Wie kann ich das gleiche lösen, ich bin neu zu swift 3, bitte helfen !! Vielen Dank im Voraus

+0

Was ist die Art von 'Daten'? – avismara

+0

@avismara Ich habe meine Frage bearbeitet –

+1

Lesen Sie den Abschnitt über die Sprachführung auf Optionals. – Alexander

Antwort

4

Sie müssen den Datentyp für Dictionary angeben, um auf seinen Wert zuzugreifen.

case .success(let data): 
    var userId = "" 
    if let dic = data as? [String:Any], 
     let loginDic = dic["UserLoginResult"] as? [String:Any], 
     let userID = loginDic["UserID"] as? Int { 
      userId = "\(userID)" 
    } 

Für Ihren zweiten Fehler müssen Sie die optionalen

for i in 0..<(userArray?.count ?? 0) { 

wickeln Oder Sie können die userArray wie auf diese Weise auspacken.

if let array = userArray { 
    for i in 0..<array { 
     //access array here 
    } 
} 
+0

Bitte überprüfen Sie die bearbeitete Antwort :) –

+1

Sie sollten 'userArray' richtig auspacken. Vermutlich muss die 'for'-Schleife in der Lage sein, trotzdem darauf zuzugreifen. – Alexander

+0

Auch möglicherweise sicherer' guit' zu verwenden hier – brandonscript

Verwandte Themen