我的代码是这样的:
let item = try await itemProvider.loadItem(forTypeIdentifier: UTType.url.identifier, options: nil)
if let data = item as? Data {
do {
if let plist = try PropertyListSerialization.propertyList(from: data, options: [], format: nil) as? [String: Any] {
print(plist)
} else if let url = URL(dataRepresentation: data, relativeTo: nil) {
print(url.absoluteString)
}
} catch {
print(error.localizedDescription)
}
}
在测试时,我使用SwiftUI PasteButton从iOS 17 Safari复制并粘贴URL。
plist解析不起作用,数据被解析为URL,但我得到了一些关于plist的提示。
所以我在Engadget上测试了今天的第一个故事,测试URL是:https://www.engadget.com/microsoft-surface-laptop-studio-2-hands-on-more-ports-and-a-much-needed-spec-bump-171733141.html
将其解析为URL后,我得到:bplist00%C2%A3%01%02%03_%10yhttps://www.engadget.com/microsoft-surface-laptop-studio-2-hands-on-more-ports-and-a-much-needed-spec-bump-171733141.htmlP%C3%91%04%05Utitle_%10RMicrosoft%20Surface%20Laptop%20Studio%202%20hands-on:%20More%20ports%20and%20a%20much-needed%20spec%20bump%08%0C%C2%88%C2%89%C2%8C%C2%92%00%00%00%00%00%00%01%01%00%00%00%00%00%00%00%06%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%C3%A7
同样,这看起来像plist,但至少上面的代码没有解析。
很可能iOS中发生了一些变化,因为根据这个旧线程,简单解析URL应该可以工作:How do I load a URL using NSItemProvider's new Async loadItem method?
如何处理这一点?
1条答案
按热度按时间v9tzhpje1#
我很感激别人的帮助。答案是plist需要转换为
[Any]
而不是[String: Any]