我正在尝试使用iOS应用程序的文件包来定义UTI类型.在谷歌搜索并查看Xcode.plist中的条目后,我尝试了一些事情,但一直遇到问题.我的应用程序创建了一些测试文档,然后尝试使用我的自定义UTI读取这些文件.
如果我没有指定"LSItemContentTypes",那么finder会正确地将它们视为包.但是mdls将"dyn.longstring"作为kMDItemContentType返回.
如果我指定"LSItemContentTypes",则kMDItemContentType是正确的.但是finder将其视为文件夹.
在这两种情况下,我通过UTI
[url getResourceValue:&UTI
forKey:NSURLTypeIdentifierKey
error:nil];
Run Code Online (Sandbox Code Playgroud)
是不正确的.它要么返回"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>
Run Code Online (Sandbox Code Playgroud)
遇到了类似的问题,包括 UTI 显示为“dyn.longstring”。似乎修复是删除 CFBundleTypeExtensions 属性(已弃用)。info.plist 中的这种组合对我有用:
\n\n<key>CFBundleDocumentTypes</key>\n<array>\n <dict>\n <key>CFBundleTypeName</key>\n <string>My App Name</string>\n <key>LSHandlerRank</key>\n <string>Owner</string>\n <key>LSItemContentTypes</key>\n <array>\n <string>my.content.type</string>\n </array>\n <key>LSTypeIsPackage</key>\n <true/>\n </dict>\n</array>\n<key>UTExportedTypeDeclarations</key>\n<array>\n <dict>\n <key>UTTypeConformsTo</key>\n <array>\n <string>com.apple.package</string>\n <string>public.composite-\xe2\x80\x8bcontent</string>\n </array>\n <key>UTTypeDescription</key>\n <string>My App Name</string>\n <key>UTTypeIdentifier</key>\n <string>my.content.type</string>\n <key>UTTypeTagSpecification</key>\n <dict>\n <key>public.filename-extension</key>\n <string>myextension</string>\n </dict>\n </dict>\n</array>\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
464 次 |
| 最近记录: |