2016-07-03 14 views
0

Während 3 Xcode 8 und Swift mit, Ich versuche, die folgende Methode für das FileManagerDelegate Protokoll zu implementieren:Swift 3 FileManagerDelegate: shouldRemoveItemAt Compilerfehler

private func fileManager(_ fileManager: FileManager, shouldRemoveItemAt URL: URL) -> Bool { 
    var shouldDelete = true 
    let urlString = URL.absoluteString 
    if urlString?.range(of: "keepfiles") != nil { 
     shouldDelete = false 
    } 
    return shouldDelete 
    } 

der Compiler die folgende Fehlermeldung angezeigt:

Use of undeclared type: 'URL' 

aber es bietet keine Lösung, um es zu beheben. Aus diesem Grund kann ich die selektive Löschung nicht testen. Wenn ich die URL-Typ-Deklaration zu NSURL ändere, verschwindet der Fehler, aber der Delegat wird nie aufgerufen und alle Dateien werden gelöscht.

Weiß jemand, warum das passiert und wie ich es beheben kann?

Antwort

1

Sie versuchten url die absoluteString vom typeURL statt Instanz zu erhalten. Ändern Sie Ihren Parameternamen in ein besser lesbares Format und machen Sie das, der Fehler wird verschwinden.

private func fileManager(_ fileManager: FileManager, shouldRemoveItemAt url: URL) -> Bool { 
      var shouldDelete = true 
      let urlString = url.absoluteString 
      if urlString?.range(of: "keepfiles") != nil { 
       shouldDelete = false 
      } 
      return shouldDelete 
     } 
+0

Die seltsame Sache ist, dass der URL: URL-Teil von Xcode Autocompletion generiert wurde; Vielleicht sollte ich das im Bug-Reporter melden? –

+0

@MichaelSheaver Kann sein, wenn du denkst, überprüfe es trotzdem. –