0

特定の拡張子を持つ xml テキスト ファイルを開く必要があるドキュメント ベースのアプリを作成しました。NSDocument テンプレートを使用して Xcode でプロジェクトを作成したときに、必要な拡張機能を指定したところ、すべて正常に機能していました。

ドキュメント ベースのアプリの作成方法に関する Apple のガイドに従って、Info.plist ファイルを編集し、以前は欠けていた UTI の詳細を追加しました。突然、アプリが必要な拡張子のファイルを開くのをやめ、実際にファイルを開くのをやめました。また、ファイルを保存しようとすると、保存ダイアログに拡張子が表示されなくなりました。

ファイルを保存mdlsして端末からコマンドを実行すると、

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

public.xmlInfo.plistでUTIを設定する代わりに。私のアプリは、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>
4

1 に答える 1

3

プロジェクトのターゲット情報設定を使用して、Xcode 4.2 および 4.4 の Info.plist ファイルの代わりにドキュメント タイプと UTI を設定しました。これは Info.plist ファイルから取得し、変更後に変更します。代わりにそれを使用してみてください。

ドキュメント タイプは、拡張機能と拡張機能を処理するクラスを定義します。エクスポートされた UTI は、アプリが権限を持つ拡張機能を表します。この Stackoverflow の質問を参照してください: What are “Imported UTIs” in Xcode 4?

エクスポートされた UTI は public.data (「ファイルやメモリ内データを含む、あらゆる種類の単純なバイト ストリームの基本型」) に準拠しています。識別子を使用する場合は、ドキュメント タイプとエクスポートされた UTI の両方で同じであることを確認してください。

于 2012-08-23T19:14:58.963 に答える