使用任何扩展名保存文档

时间:2013-11-13 02:25:02

标签: objective-c save file-extension nsdocument uti

我正在Xcode中制作一个简单的纯文本编辑器。

每当我尝试将文档保存在特定扩展名中时,我都会收到此错误:

You cannot save this document with extension “.scala” at the end of the name. The required extension is “.(null)”

我仅针对某些扩展程序(.scala.jade,...)收到此提醒。我使用大多数扩展程序保存文件都没有问题,无论是真实的(.something.js.stackoverflow.html,...),还是没有扩展程序。< / p>

这只发生在Untitled Documents中。我可以毫无问题地打开有问题的扩展程序(.scala.jade,...)并与它们一起正常工作。

关于可能出现什么问题的任何线索?

以下是我的文件类型,顺便说一句:

Document Types

编辑:

回答Wil Shipley的问题

“scala”或“jade”会出现在项目文件的任何位置吗?如果您在TextEdit中创建一个新文件并以“.scala”结尾保存它,它是否会抛出相同的错误?如果您在Finder中双击“.scala”文件,它是否会在某处打开?

  • 不是我发布此问题时。我添加了一些代码来提取正在打开的文件的扩展名,并尝试在NSDictionary中找到它以了解用户正在使用的文件(用于自动语法突出显示目的以及其他可能有用的内容)。但是,没有任何干扰保存文档的内容。当我发布这个问题时,我不认为“scala”或“jade”在项目的任何地方都被输入。

  • 它不会抛出相同的错误,但它不允许我立即使用该扩展名保存它。其他扩展(我试过“.c”,“。jad”,“。scal”)将保存而不会弹出任何对话框。当我尝试使用'.jade'或'.scala'保存时,会出现这个对话框:

TextEdit Dialog

值得注意的是,当我尝试保存为“.html”时,它也会出现。然而,'。html'对我的申请没有任何麻烦。

  • 他们将在Sublime Text中打开。这是我唯一可以打开此类文档的应用程序。我想值得注意的是,Finder会自动隐藏这些类型的文件扩展名;对于像.scal','。jad','。stackoverflow'等虚构扩展不会发生的事情。

1 个答案:

答案 0 :(得分:0)

我目前的想法可能是Sublime Text已经奇怪地宣布.scala和.jade的UTI,导致你的应用程序绊倒试图保存这两个。例如,如果Sublime说.scala应该是类型“文件夹”或类似的东西,这可能会解决问题......但我只是在猜测。

要测试这一点,请删除Sublime Text并确保它完全脱离桌面,甚至可以注销并登录以刷新UTI缓存(voodoo!),然后再次尝试使用您的应用。

(当然,确保在实验结束后再次获得Sublime Text。)