在 Swift 中将 NSSecureCoding 转换为 URL

Cast NSSecureCoding to URL in Swift

我有一个 ShareExtension,其中我得到 URL,我想使用它,但为此我需要 cast 它作为 String

@objc func actionButtonTapped(){
        print("yeet")
        var html: String?

        if let item = extensionContext?.inputItems.first as? NSExtensionItem,
            let itemProvider = item.attachments?.first,
            itemProvider.hasItemConformingToTypeIdentifier("public.url") {
            itemProvider.loadItem(forTypeIdentifier: "public.url", options: nil) { (url, error) in
                if (url as? URL) != nil {

                    let urlString = String(contentsOf: url)

                    OpenGraphDataDownloader.shared.fetchOGData(urlString: urlString) { result in
                        switch result {
                        case let .success(data, _):
                            // do something
                            print(data.pageTitle!)
                        case let .failure(error, _):
                            // do something
                            print(error.localizedDescription)
                        }

                    }
                }
            }
        }
}

上面的代码抛出这个 error:

Cannot convert value of type 'NSSecureCoding?' to expected argument type 'URL'

问题:

如何将 NSSecureCoding 转换为 URL,然后再将其转换为 String?在任何地方都找不到任何关于此的内容...很高兴得到您的帮助!

我通过首先将其转换为 NSURL 然后像这样得到它的 absoluteString 来解决它:

let directoryURL = url as! NSURL

let urlString: String = directoryURL.absoluteString!