文档类型关联在应用程序未运行时崩溃

时间:2018-05-22 20:19:22

标签: swift xcode cfbundledocumenttypes

我创建了自己的 PDF查看器,并希望将pdf文件格式与之关联,以便我可以从 Finder 打开pdf文件,终端< / strong>或拖动&amp;降即可。如果我启动应用程序然后尝试以正确显示的文档之前提到的3种方式之一打开pdf,但如果我在应用程序未打开时执行相同的操作则会崩溃。

此处我的CFBundleDocumentTypes设置(来自 info.plist 文件):

<key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeExtensions</key>
            <array>
                <string>pdf</string>
            </array>
            <key>CFBundleTypeIconFile</key>
            <string>pdfformat</string>
            <key>CFBundleTypeName</key>
            <string>pdf</string>
            <key>CFBundleTypeRole</key>
            <string>Viewer</string>
            <key>LSHandlerRank</key>
            <string>Default</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>giannigianino.Mirror</string>
            </array>
            <key>LSTypeIsPackage</key>
            <integer>1</integer>
        </dict>
    </array>

此处崩溃报告发生崩溃:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   username.Mirror            0x0000000106a4d6e2 _T06Mirror11AppDelegateC11applicationSbSo13NSApplicationC_SS8openFiletF + 1090
1   username.Mirror            0x0000000106a4d749 _T06Mirror11AppDelegateC11applicationSbSo13NSApplicationC_SS8openFiletFTo + 89
2   com.apple.AppKit                0x00007fff9f355bd3 -[NSApplication _doOpenFile:ok:tryTemp:] + 322
3   com.apple.AppKit                0x00007fff9f1407df -[NSApplication(NSAppleEventHandling) _openDocumentURLs:withCompletionHandler:] + 996

我也使用自定义pdf图标,但即使将我的应用程序设置为打开所有pdf文件的首选应用程序,它也不会显示。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。基本上崩溃发生在application(_:openFile:)方法中,我在实例化之前调用了我的mainViewController。解决方案是将applicationWillFinishLaunching(_:)中的代码移到application(_:openFile:)之前发送到应用程序的代理而不是之后发送的applicationDidFinishLaunching(_:)中的代码