我经常为桌面应用程序创建自己的文档类型。但我从未注册过自己的自定义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.xml
和public.text
。但是,导出的文件没有文件图标。我的自定义UTI似乎没有被正确识别。我的目标是让这个桌面应用程序生成一个文件,以便用户可以通过AirDrop将其发送到iOS等效文件。我究竟做错了什么?感谢。