Wie kann ich eine URL in Swift 3 deklarieren?
Dies ist mein versuchter Code:
var messageURL: URL = URL()
OR
var messageURL: Foundation.URL = URL()
Dies ist der Fehler: Der Initialisierer für den Typ 'URL' kann nicht ohne Argumente aufgerufen werden
Hier ist eine Dokumentation (Swift 3.0) von Apple, die Probleme bei der Implementierung hat:
Eigenschaften, deren Name mit Foundation-Typen in Konflikt steht, nachdem das Präfix NS entfernt wurde, führen zu modulqualifizierten Typnamen. Wenn beispielsweise eine var-URL: NSURL vorhanden ist, wird diese als var-URL: Foundation.URL umgeschrieben
Swift 3 hat URL
(eine struct
) und NSURL
(eine class
, die sie von ObjC erbt). Die Situation ist wie String
und NSString
. Sie haben 2 Möglichkeiten, um dies zu erreichen:
1: Wenn Sie die URL zum Zeitpunkt der Erklärung kennen:
let url = URL(string: "https://www.Apple.com")
2: Wenn Sie die URL erst später erfahren 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")
Als ich zu Swift 3 wechselte, hatte ich dasselbe Problem. Nachdem ich jedoch festgefahren war, stellte ich fest, dass ich vor der Migration eine Klasse mit dem Namen URL
erstellte, die jetzt in die URL
-Struktur von Foundation eingriff und Probleme machte.
In Swift 3 hat URL viele Initialisierer, aber alle haben ein Argument, entweder String oder Daten.