所以,我正在制作一个macOS应用程序,该应用程序具有接受文本的共享扩展。我在iOS上制作了相同的应用程序,其中此代码
func fetchAndSetContentFromContext() {
guard let extensionItems = extensionContext?.inputItems as? [NSExtensionItem] else {
return
}
for extensionItem in extensionItems {
if let itemProviders = extensionItem.attachments as? [NSItemProvider] {
for itemProvider in itemProviders {
if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeText as String) {
itemProvider.loadItem(forTypeIdentifier: kUTTypeText as String, options: nil, completionHandler: { text, error in
DispatchQueue.main.async {
self.titleField.text = (text as! String)
}
})
}
}
}
}
}
返回用户选择的文本,但由于某种原因它在 Mac 上不起作用。我该怎么办?
我在使用Mac Catalyst应用程序时遇到了同样的问题,并意识到共享文本包含在NSExtensionItem.attributedContentText
中。
当我的共享扩展检索NSExtensionItem
详细信息时,如果没有任何NSItemProvider
存在,我会检查上述变量。
没有理由为什么此代码无法在macOS上运行,因此问题出在此代码中,我认为有两种可能的情况可以说明为什么会发生:
- 你的信息列表不一样 macOS 上的源应用程序发送内容的方式
- 与 iOS 上的源应用程序发送内容的方式不同。