2016-07-11 13 views
-3

Ich habe Probleme, den String aus einer NSURLSession zu bekommen. Der folgende Code verbindet sich mit meinem Server und es sollte einen Base64 String zurückgeben.Base64 ist ein NSString und kein String

Alles, was ich bekomme, ist ein NSString. Am Ende dieses Post ist ein Beispiel für die Ausgabe. Warum fügt "optional" vor dem String hinzu? Und wie speichere ich diese Zeichenfolge in eine Variable? Ich brauche den String zum Decodieren des Base64.

let url = NSURL(string: "url here") 

    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in 
     print(NSString(data: data!, encoding: NSUTF8StringEncoding)) 
    } 

    task.resume() 

Output:

Optional(base64String...) 
+4

Als Swift Programmierer Sie Optionals zu lernen. Lesen Sie das Handbuch: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID330 – Moritz

Antwort

0

die Initialisierer init?(data:encoding:) ein optionales NSString zurückkehrt, weil es für die gegebenen Daten (sehr) möglich ist, um keine gültige Zeichenfolge codierte mit dem bereitgestellten Codierungstyp darstellen. In diesem Fall gibt es anstelle von Abstürzen, Fehlern oder Zeichenfolgen wie "error"nil zurück, mit denen Sie der Swift-Compiler zu tun hat.

Sie können mehr über Optionals Swift lernen in The Swift Language Guide (Swift 2.2) - The Basics - Optionals

+0

Vielen Dank für Ihre Antwort. Ich habe deinen Link gelesen. Wenn ich es richtig verstanden habe, musste ich nur NSString (Daten, Kodierung) ändern! <- aber ich habe immer noch das Problem, dass ich es nicht in einer Variablen speichern kann. – qwdtimes2

+0

Entschuldigung, ich sende meinen Kommentar zu schnell. Hast du es gelesen? Ich werde es als akzeptiert markieren nach :) – qwdtimes2

+1

empfehle ich gegen den Einsatz des Force-Unwrap-Operators ('!'). Es ist bei weitem die häufigste Ursache für Abstürze in Swift-Programmen. Was meinst du mit "immer noch das Problem, dass ich es nicht auf eine Variable speichern kann"? – Alexander

Verwandte Themen