【发布时间】:2014-08-20 23:56:14
【问题描述】:
我在使用 UIActivityViewController 共享电子表格和视频(可能还有其他文件类型)时遇到问题。问题是找不到正确的类型标识符。例如,当我尝试附加电子表格时,如下代码所示:
let testFilePath = NSBundle.mainBundle().pathForResource("test_spreadsheet", ofType: "xlsx")
let testData = NSData(contentsOfFile: testFilePath)
let list = [testData]
let activityViewController = UIActivityViewController(activityItems: list, applicationActivities: nil)
navigationController.presentViewController(activityViewController, animated: true, completion: nil)
我收到以下日志消息:
2014-08-20 16:45:58.035 TestExtensionPoints[12608:194174] Discovered extensions: {(
<NSExtension: 0x7fb7fca13680> {id = com.asperasoft.faspex-app.FaspexExtension}
)} for attributes: {
NSExtensionActivationRule = {
extensionItems = (
{
attachments = (
{
registeredTypeIdentifiers = (
"public.data"
);
}
);
}
);
};
NSExtensionPointName = (
"com.apple.share-services",
"com.apple.ui-services",
"com.apple.services"
);
}
注意注册的类型标识符是public.data,而不是public.spreadsheet。
这与我尝试附加 pdf 或 png 文件时不同。如果我只是将文件更改为 pdf,如下面的代码所示(仅第一行更改):
let testFilePath = NSBundle.mainBundle().pathForResource("test_pdf", ofType: "pdf")
我收到以下日志消息,它确实具有所需的类型标识符:
2014-08-20 16:50:52.973 TestExtensionPoints[12652:196132] Discovered extensions: {(
<NSExtension: 0x7ff2534285a0> {id = com.asperasoft.faspex-app.FaspexExtension}
)} for attributes: {
NSExtensionActivationRule = {
extensionItems = (
{
attachments = (
{
registeredTypeIdentifiers = (
"com.adobe.pdf"
);
}
);
}
);
};
NSExtensionPointName = (
"com.apple.share-services",
"com.apple.ui-services",
"com.apple.services"
);
}
有谁知道为什么会这样,有没有人有解决方法?我知道我可以只编写文件并附加 URL,但这并不是本练习的真正目的。
额外背景:我问这个主要是因为我正在做一个共享扩展,并且正在试验如何将数据传递给我。我已经介绍了它作为 URL 和 UIImage 传递的情况。除了我没有得到我需要的类型标识符这一事实之外,这些其他情况都可以。
【问题讨论】:
标签: ios swift uiactivityviewcontroller ios-app-extension uti