2016-09-27 54 views
1

我有以下功能:缺少URL(來源:NSPasteboard)和斯威夫特3

override func performDragOperation(_ sender: NSDraggingInfo) -> Bool { 
     let pasteboard = sender.draggingPasteboard() 
     let fileURL = URL(from: pasteboard) 
     // Does something 
} 

我收到以下錯誤,在 「URL(來源:紙板)」

參數標籤「 (from :)'不匹配任何可用的過載

從我可以告訴NSURL有以下方法。

init?(from pasteBoard: NSPasteboard) 

我不知道我在做什麼錯?

回答

1

簡短回答是URL與NSURL不一樣。 Swift 3的變化並不僅僅是刪除了NS,使得它更易於閱讀,而是實現了自己的簡單版本的NSURL。在Apple設備上時,它會祕密使用NSURL。

要解決它,我改變了我的代碼,這樣使用:

let fileURL = NSURL(from: pasteboard) as? URL 

有關刪除的NS更多信息可以在這裏找到:https://github.com/apple/swift-evolution/blob/master/proposals/0086-drop-foundation-ns.md

如果你想查看源代碼發現這裏:https://github.com/apple/swift/blob/master/stdlib/public/SDK/Foundation/URL.swift