2016-09-17 4 views
17

Wie kann ich eine URL in swift 3 deklarieren?URL in Swift 3 angeben

Dies ist mein Versuch Code:

var messageURL: URL = URL() 

ODER

var messageURL: Foundation.URL = URL() 

Dies ist der Fehler: kann nicht Initialisierer für Typ 'URL' aufrufen ohne Argumente

Hier einige Dokumentation (Swift 3.0) von Apple, dass ich Probleme habe zu implementieren:

Properties whose name conflicts with Foundation types after removing their NS prefix will lead to module-qualified type names. For example, if there is a var URL: NSURL, it will be rewritten as var URL: Foundation.URL

Antwort

56

Swift 3 hat URL (eine struct) und NSURL (eine class, die er von ObjC erbt). Die Situation ist wie String und NSString. Sie haben 2 Möglichkeiten, diesen Ansatz:

1: Wenn Sie die URL zum Zeitpunkt der Erklärung wissen:

let url = URL(string: "https://www.apple.com") 

2: Wenn Sie nur über die URL später herausfinden können:

var url: URL! 

// You can check if the variable is initialized by checking it against nil: 
//  if url == nil { /* not initialized */ } 

// When you are ready to assign it a value: 
url = URL(string: "https://www.apple.com") 
-1

Ich stieß auf das gleiche Problem, als ich zu Swift 3 migrierte, aber nachdem ich feststeckte, stellte ich fest, dass ich eine Klasse vor der Migration URL machte, die jetzt mit URL Struktur von Foundation interferierte und Probleme machte.

-1

In Swift 3 URL hat viele Initialisierer, aber alle von ihnen nehmen ein Argument, entweder Zeichenfolge oder Daten.