Swift 4.2 UIDocumentBrowser View Controller Powerpoint PPTX 文件灰显

Posted

技术标签:

【中文标题】Swift 4.2 UIDocumentBrowser View Controller Powerpoint PPTX 文件灰显【英文标题】:Swift 4.2 UIDocumentBrowser View Controller Powerpoint PPTX files greyed out 【发布时间】:2019-02-25 10:45:09 【问题描述】:

我在带有 Swift 的 Xcode 10.1 中使用基于文档的应用程序模板。开箱即用,它不支持许多文件类型,因此我添加了许多文档类型,包括各种 Microsoft Office 格式(doc、xls、ppt),它们可以正常工作。我还为 docx、xlsx 和 pptx 添加了开放的 xml 格式。这些也可以正常工作,除了 pptx 在运行应用程序时保持灰色。我也尝试过使用导入的 UTI 部分,但没有成功。这是 Info.plist 的摘录,显示了 docx 和 xlsx 条目(有效)以及等效的 pptx 条目无效。

这些工作:

 <dict>
    <key>CFBundleTypeIconFiles</key>
    <array/>
    <key>CFBundleTypeName</key>
    <string>wordx</string>
    <key>CFBundleTypeRole</key>
    <string>Viewer</string>
    <key>LSHandlerRank</key>
    <string>Alternate</string>
    <key>LSItemContentTypes</key>
    <array>
        <string>org.openxmlformats.wordprocessingml.document</string>
    </array>
</dict>
<dict>
    <key>CFBundleTypeIconFiles</key>
    <array/>
    <key>CFBundleTypeName</key>
    <string>excelx</string>
    <key>CFBundleTypeRole</key>
    <string>Viewer</string>
    <key>LSHandlerRank</key>
    <string>Alternate</string>
    <key>LSItemContentTypes</key>
    <array>
        <string>org.openxmlformats.spreadsheetml.sheet</string>
    </array>
</dict>

虽然不是这样:

    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array/>
        <key>CFBundleTypeName</key>
        <string>powerx</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHanderRank</key>
        <string>Default</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>org.openxmlformats.presentationml.presentation</string>
        </array>
    </dict>

我也尝试过导入的 UTI,但没有成功:

<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.content</string>
</array>
<key>UTTypeDescription</key>
<string>powerpoint pptx</string>
<key>UTTypeIconFiles</key>
<array/>
<key>UTTypeIdentifier</key>
<string>org.openxmlformats.presentationml.presentation</string>
<key>UTTypeTagSpecification</key>
<array>
<string>pptx</string>
<string>application/vnd.openxmlformats-officedocument.presentationml.presentation</string>
</array>
</dict>
</array>

任何帮助将不胜感激,谢谢。

【问题讨论】:

【参考方案1】:

根据文档here,ppt 文件的 UTI 标识符是 com.microsoft.powerpoint.​ppt

所以你可以试试:

<dict>
    <key>CFBundleTypeIconFiles</key>
    <array/>
    <key>CFBundleTypeName</key>
    <string>powerx</string>
    <key>CFBundleTypeRole</key>
    <string>Viewer</string>
    <key>LSHanderRank</key>
    <string>Default</string>
    <key>LSItemContentTypes</key>
    <array>
        <string>com.microsoft.powerpoint.​ppt</string>
    </array>
</dict>

【讨论】:

以上是关于Swift 4.2 UIDocumentBrowser View Controller Powerpoint PPTX 文件灰显的主要内容,如果未能解决你的问题,请参考以下文章

Swift 4.2 新特性(译)

Swift 4.2 类型“NSAttributedString.Key”没有成员“accessibilitySpeechPitch”

swift 4.2 的 Xcode 10 视觉识别问题

Swift 4.2 升级后将 Swift 类桥接到 React Native

Swift 4.2:无法让简单的委托协议工作

Swift 4.2 - 如何在枚举函数中使用警报?