gpt4 book ai didi

ios - 识别 iOS 文件包(在 Simulator 和 Finder 中)

转载 作者:可可西里 更新时间:2023-11-01 04:59:52 25 4
gpt4 key购买 nike

我正在尝试将文件包用于定义 UTI 类型的 iOS 应用程序。谷歌搜索并查看 Xcode.plist 中的条目后,我尝试了一些方法但一直遇到问题。我的应用创建了一些测试文档,然后尝试使用我的自定义 UTI 读取这些文件。

如果我不指定“LSItemContentTypes”,finder 会正确地将它们视为包。但随后 mdls 返回“dyn.longstring”作为 kMDItemContentType。

如果我确实指定了“LSItemContentTypes”,那么 kMDItemContentType 就是正确的。但是 finder 将其视为一个文件夹。

在这两种情况下,我都是通过

[url getResourceValue:&UTI
forKey:NSURLTypeIdentifierKey
error:nil];

不正确。它返回“dyn.longstring”或“public.folder”。由于不正确的 UTI,我的应用程序不会加载这些文件。我可以重写它,但希望以正确的方式使用 UTI。

我将一个 iOS 文件包定义为文档类型并导出 UTI 类型,如下所示。我忽略了什么?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>tdp</string>
</array>
<key>CFBundleTypeName</key>
<string>MyFilePackage</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSItemContentTypes</key>
<array>
<string>reverse.dns.ios.package</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>Default</string>
<key>LSIsAppleDefaultForType</key>
<true/>
<key>LSTypeIsPackage</key>
<true/>
</dict>
</array>
</plist>


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename.extension</key>
<array>
<string>tdp</string>
</array>
</dict>
<key>UTTypeIdentifier</key>
<string>reverse.dns.ios.package</string>
<key>UTTypeConformsTo</key>
<array>
<string>com.apple.package</string>
<string>public.composite-content</string>
</array>
</dict>
</array>
</plist>

最佳答案

遇到了类似的问题,包括 UTI 显示为“dyn.longstring”。似乎修复是删除 CFBundleTypeExtensions 属性(已弃用)。 info.plist 中的这种组合对我有用:

<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>My App Name</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>my.content.type</string>
</array>
<key>LSTypeIsPackage</key>
<true/>
</dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>com.apple.package</string>
<string>public.composite-​content</string>
</array>
<key>UTTypeDescription</key>
<string>My App Name</string>
<key>UTTypeIdentifier</key>
<string>my.content.type</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<string>myextension</string>
</dict>
</dict>
</array>

关于ios - 识别 iOS 文件包(在 Simulator 和 Finder 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13039218/

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