gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 17:35:24 25 4
gpt4 key购买 nike

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

按照 Apple 关于如何构建基于文档的应用程序的指南,我编辑了 Info.plist 文件以添加之前缺少的 UTI 详细信息。突然我的应用程序停止打开具有我想要的扩展名的文件,并且实际上停止打开任何文件。此外,当我尝试保存文件时,保存对话框不再建议任何扩展名。

当我保存文件并从终端运行命令 mdls 时,我得到

kMDItemContentTypeTree         = (
"public.data",
"public.item"
)

我在 Info.plist 中设置了 UTI,而不是 public.xml。我的应用程序似乎停止识别 Info.plist 中存储的信息。为了让它工作,我必须在 Xcode 中连接什么东西吗?

这是我的 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>

最佳答案

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

文档类型定义将处理扩展的类和扩展。导出的 UTI 代表您的应用程序具有权威性的扩展。请参阅这个 Stackoverflow 问题: What are “Imported UTIs” in Xcode 4?

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

关于objective-c - NSDocument 应用程序和文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12090460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com