2014-10-23 14 views
12

Also, bevor ich den letzten Update heruntergeladen, der folgende Code für mich gearbeitet:String mit Inhalt von Url Swift?

var g_home_url = String.stringWithContentsOfURL(NSURL(string: url_string), encoding: NSUTF8StringEncoding, error: nil) // Gives me an error: "String.Type does not have a member names stringWithContentsOfUrl" 

Ich bin verwirrt. Was ist der richtige Weg, um die folgende Ziel-C-Methode in swift zu erreichen?

NSString * g_home_url = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:home_url] encoding:NSUTF8StringEncoding error:nil]; 

Antwort

15

Über die -initWithContentsOfURL:encoding:error: Instanzmethode anstelle der Bequemlichkeit Initialisierer +stringWithContentsOfURL:encoding:error: Klasse.

var g_home_url = String(contentsOfURL: NSURL(string: url_string)!, encoding: NSUTF8StringEncoding, error: nil) 

Ich habe keine Ahnung, ob Klasse Bequemlichkeit initializers in Swift jetzt nicht unterstützt werden, aber es wäre sinnvoll, da sie nur Kürzel für den Alloc-init vorformulierten waren, die nicht in Swift existieren.

+1

'initWithContentsOfURL' und' stringWithContentsOfURL' sind mit dem * gleichen * Swift Methode abgebildet, und es scheint, dass nur die init-Methode von Swift in einem solchen Fall aufgerufen werden kann. http://stackoverflow.com/questions/26491508/creating-an- object-in-swift-using-the-objective-c-factory-method-gives-a-compile beschreibt ein ähnliches Problem. –

+0

'contentsOfURL' ruft die Antwort für diese URL ab. Ich weiß nicht, was der Grund ist. Ich benutze die Anführungszeichen-Syntax, um es jetzt zu konvertieren. http://stackoverflow.com/questions/27062454/converting-url-to-string-and-back-again/31586194#31586194 – Roger

0

Hier ist, was es für mich gearbeitet: (Es gibt kein Fehlerargument)

var g_home_url = try! String(contentsOfURL: NSURL(string: url_string)!, encoding: NSUTF8StringEncoding) 

oder wenn Sie den Fehler behandeln wollen:

do { 
    var g_home_url = try String(contentsOfURL: NSURL(string: url_string)!, encoding: NSUTF8StringEncoding) 
} 
catch { 
    print(error) 
} 
6

Für Swift 3 musst du zu verwenden String(contentsOf:encoding:). Es wirft.

do { 
    var content = try String(contentsOf:URL(string: "http://your-URI-here")!) 
} 
catch let error { 
    // Error handling 
}