Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSDocument应用程序和文件扩展名_Objective C_Cocoa_Nsdocument - Fatal编程技术网

Objective c NSDocument应用程序和文件扩展名

Objective c NSDocument应用程序和文件扩展名,objective-c,cocoa,nsdocument,Objective C,Cocoa,Nsdocument,我创建了一个基于文档的应用程序,需要打开具有特定扩展名的xml文本文件。当我使用NSDocument模板在Xcode中创建项目时,我指定了我想要的扩展,一切正常 根据苹果公司关于如何构建基于文档的应用程序的指南,我编辑了Info.plist文件,添加了以前丢失的UTI的详细信息。突然,我的应用程序停止打开扩展名为我想要的文件,事实上也停止打开任何文件。此外,当我试图保存文件时,“保存”对话框不再建议任何扩展名 当我保存文件并从终端运行命令mdls时 kMDItemContentTypeTree

我创建了一个基于文档的应用程序,需要打开具有特定扩展名的xml文本文件。当我使用NSDocument模板在Xcode中创建项目时,我指定了我想要的扩展,一切正常

根据苹果公司关于如何构建基于文档的应用程序的指南,我编辑了Info.plist文件,添加了以前丢失的UTI的详细信息。突然,我的应用程序停止打开扩展名为我想要的文件,事实上也停止打开任何文件。此外,当我试图保存文件时,“保存”对话框不再建议任何扩展名

当我保存文件并从终端运行命令
mdls

kMDItemContentTypeTree         = (
    "public.data",
    "public.item"
)
我在Info.plist中设置了UTI,而不是
public.xml
。 似乎我的应用程序不再识别Info.plist中存储的信息。为了让它工作,我需要在Xcode中连接什么吗

以下是my Info.plist文件的相关部分:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>xmds</string>
        </array>
        <key>CFBundleTypeIconFile</key>
        <string>AppIcon</string>
        <key>CFBundleTypeName</key>
        <string>XMDS Script</string>
        <key>CFBundleTypeOSTypes</key>
        <array>
            <string>xmds</string>
        </array>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.dedalus.degs</string>
        </array>
        <key>NSDocumentClass</key>
        <string>Document</string>
    </dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.xml</string>
        </array>
        <key>UTTypeDescription</key>
        <string>XMDS Script</string>
        <key>UTTypeIconFile</key>
        <string>AppIcon</string>
        <key>UTTypeIdentifier</key>
        <string>com.dedalus.degs</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>com.apple.ostype</key>
            <array>
                <string>xmds</string>
            </array>
            <key>public.filename-extension</key>
            <array>
                <string>xmds</string>
            </array>
        </dict>
    </dict>
</array>
CbundleDocumentTypes
CbundleTypeExtensions
xmds
CbundleTypeConfigile
苹果图标
CbundleTypeName
XMDS脚本
Cbundletypeostypes
xmds
CbundleTypeRole
编辑
lsItemContentType
com.dedalus.degs
NSDocumentClass
文件
UTExportedTypeDeclarations
Uttypecommisto
public.xml
UTTypeDescription
XMDS脚本
UTTypeIconFile
苹果图标
UTTypeIdentifier
com.dedalus.degs
Uttypetag规范
com.apple.ostype
xmds
public.filename-extension
xmds

我使用项目的目标信息设置来设置文档类型和UTI,而不是Xcode 4.2和4.4中的Info.plist文件。这将从Info.plist文件中提取,并在更改后对其进行修改。试着用它来代替

文档类型定义将处理扩展和扩展的类。导出的UTI表示您的应用程序具有权威性的扩展。请参见以下问题:


我导出的UTI符合public.data(“任何类型的简单字节流的基本类型,包括文件和内存数据”)。如果使用标识符,请确保文档类型和导出的UTI中的标识符相同。

我使用项目的目标信息设置来设置文档类型和UTI,而不是Xcode 4.2和4.4中的Info.plist文件。这将从Info.plist文件中提取,并在更改后对其进行修改。试着用它来代替

文档类型定义将处理扩展和扩展的类。导出的UTI表示您的应用程序具有权威性的扩展。请参见以下问题:


我导出的UTI符合public.data(“任何类型的简单字节流的基本类型,包括文件和内存数据”)。如果使用标识符,请确保文档类型和导出的UTI中的标识符相同。

我就是这样设置的。我只是觉得粘贴Info.plist更容易阅读。我就是这样设置的。我只是觉得粘贴Info.plist更容易阅读。我已经尝试使用Xcode模板创建一个新的基于文档的项目。开始时,应用程序打开并将文档保存在模板中指定的扩展名中。一旦我在项目的目标信息设置中输入文档类型的标识符,一切都会崩溃。我已经尝试使用Xcode模板创建一个新的基于文档的项目。开始时,应用程序打开并将文档保存在模板中指定的扩展名中。一旦我在项目的目标信息设置中输入文档类型的标识符,一切都会崩溃。