一旦加载了我的共享扩展,用户不会立即看到所有内容。最常见的是在那里您可以看到图像、图像数量和内容文本。但是,在某些情况下,会有更多信息。
- 如何访问它们?
我知道在 SLComposeServiceViewController
中有 extensionContext
及其 inputItems
属性。
好的,所以我及时停止了调试器,并使用以下命令在控制台上打印出一些东西:
po (extensionContext!.inputItems[0] as! NSExtensionItem).userInfo![NSExtensionItemAttachmentsKey]
- 这样做是否正确?
- 通常只有一个输入项吗?
有两个 NSItemProvider
对象作为第一个 NSExtensionItem
的附件
好的,那我打印出第一个附件:
- 如何从
NSItemProvider
获取该图像并从下一个获取 url?您能提供一些代码吗?
我想我们会用
loadItemForTypeIdentifier(_:options:completionHandler:)
但不知道怎么做。
最佳答案
导入 MobileCoreServices
有一个简单的函数可以应用到您的代码中:
private 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.loadItemForTypeIdentifier(kUTTypeText as String, options: nil, completionHandler: { text, error in }) } } } } }
关于ios - 如何从 iOS 的共享扩展中的扩展上下文中获取项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33539910/