2

我经常为我的桌面应用程序创建自己的文档类型。但我从未注册过我自己的自定义 UTI。无论如何,我想将一个简单Dictionary的数据保存为数据(NSData)文件,如下所示。

@IBAction func testClicked(_ sender: NSButton) {
    let savePath = self.documentPath() // setting a default path
    let savePanel = NSSavePanel()
    savePanel.directoryURL = NSURL.fileURL(withPath: savePath)
    savePanel.title = ""
    savePanel.message = ""
    savePanel.nameFieldStringValue = "File"
    savePanel.showsHiddenFiles = false
    savePanel.showsTagField = false
    savePanel.canCreateDirectories = true
    savePanel.allowsOtherFileTypes = false
    savePanel.allowedFileTypes = ["customtype"]
    savePanel.isExtensionHidden = false
    if savePanel.runModal() == NSFileHandlingPanelOKButton {
        let dict = ["title": "New York Nightly News", "url": "http://www.newyorknightlynews.net/cmlink/TopNews.rss"] as Dictionary<String, String>
        let data = NSKeyedArchiver.archivedData(withRootObject: dict)
        do {
            try data.write(to: savePanel.url!, options: .atomic)
        }
        catch {

        }
    } else {
        print("canceled")
    }
}

在此处输入图像描述

我已经设置了一个文档类型和一个导出的 UTI,如上所示。

最初,我将UTTypeConformsTo类型设置为public.data. 但我已将其更改为public.xmland public.text。然而,导出的文件没有文件图标。我的自定义 UTI 似乎没有被正确识别。我的目标是让这个桌面应用程序生成一个文件,以便用户可以通过 AirDrop 将其发送到 iOS 等价物。我究竟做错了什么?谢谢。

4

0 回答 0