5

UTI タイプを定義する iOS アプリ用のファイル パッケージを使用しようとしています。グーグルで検索して Xcode.plist のエントリを調べた後、いくつか試してみましたが、問題が発生し続けました。私のアプリはいくつかのテスト ドキュメントを作成し、カスタム UTI でそれらのファイルを読み取ろうとします。

「LSItemContentTypes」を指定しない場合、ファインダーはそれらをパッケージとして正しく認識します。しかし、mdls は「dyn.longstring」を kMDItemContentType として返します。

「LSItemContentTypes」を指定した場合、kMDItemContentType は正しいです。しかし、ファインダーはそれをフォルダーとして認識します。

どちらの場合も、経由して取得したUTI

[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>
4

1 に答える 1