2017-06-01 3 views
-4

Ich habe ein Problem mit der Umwandlung eines Codes in Swift 3.0 von 2.3.
Hier ist der mein Code für eine rasche 2,3Art Any ?! hat kein Subskript Mitglied in swift 3

var RequestDict = [String: AnyObject]() 

func API() { 
self.RequestDict = result["rows"]![0]["value"] as! [String: AnyObject] 

} 

Dieser Code funktioniert gut in schnellen 2,3 sondern 3,0 seine Anzeige von Fehler.

Typ Beliebig ?! hat kein tiefgestelltes Mitglied.

+0

Warum Sie gegebenen negativen Punkte für diese Frage? Bitte erläutern Sie es. –

+0

Sie sollten den Code einfügen, in dem Sie Ihr Ergebnisobjekt initialisieren. Aber selbst ohne zu wissen, welcher Typ "result" sein sollte, bin ich mir ziemlich sicher, dass Sie "result [" rows "] nicht auf einen geeigneten Typ, sondern auf" Any "schreiben, der tatsächlich kein Subskript-Member hat. –

+1

Bitte [suche den Fehler] (https://stackoverflow.com/search?q=%5Bswift%5D+Type+Any+has+no+subscripts+members) vor dem Posten. Dies wurde schon oft zuvor beantwortet. – rmaddy

Antwort

0

Zuvor hatte der Code in swift 2.3result["rows"]![0] wurde ohne Fehler leicht zusammengestellt. Aber die Dinge haben sich in swift 3 geändert, da das Ergebnis in Any Typ und Any Typ hat keine tiefgestellten Mitglieder umgewandelt.

result["rows"] sollte zuerst in Array und dann von diesem Array typecasted werden, können Sie das 0-te Element zuzugreifen, die weiter in der Art sein muss, das typecasted Sie empfangen.

Wenn Sie den obigen Code wollen wie vor arbeiten, dann können Sie SwiftyJSON verwenden, wo Sie Ihr Ergebnis in ein JSON Objekt umwandeln kann

Ihr Ergebnis Angenommen ist ein Objekt, das ein Array als Reihen innerhalb benannt hat.

let dictionary = result as! [String:AnyObject] 
let yourResultInJSON = JSON(rawValue: dictionary) 

Dann können Sie einfach diese Zeile verwenden yourResultInJSON["rows"]![0]["value"], die auch ein neues JSON Objekt sein wird, wo Sie Ihre gewünschten Schlüsselwerte wie holen können:

let finalValue = yourResultInJSON["rows"]![0]["value"] 
let someValue = finalValue["yourKey"].stringValue //or intValue or whatever you need to typecast 
Verwandte Themen