在 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!
我有一个 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!