35578


お世話になります。現在ドキュメントベースのアプリケーションを開発中ですが、アプリケーションを起動すると、デバッグログエリアに下記のような警告が表示されます。

> -[NSDocumentController fileExtensionsFromType:] is deprecated, and does not
> work when passed a uniform type identifier (UTI). If the  
>  application didn't invoke it directly then the problem is probably  
>  that some other NSDocument or NSDocumentController method is getting  
>  confused by a UTI that's not actually declared anywhere. Maybe it  
>  should be declared in the UTExportedTypeDeclarations section of this  
>  app's Info.plist but is not. The alleged UTI in question is "xxx".

この警告が出ない様にするには、Info.plistをどの様に修正すれば良いのかご存じの方、ご教示よろしくお願いします。


CC BY-SA 3.0
2017-06-14T02:43:02.567
35554
2017-07-21T18:02:13.990
2017-07-21T18:02:13.990
754
14745
question
macos
OS-X アプリケーションでのUTIの定義


あまり詳しくありませんが、  
アプリケーションのどこかで`fileExtensionsFromType:`関数を使って拡張子`xxx`を登録してるのではないしょうか。この関数は[UTI](https://ja.wikipedia.org/wiki/Uniform_Type_Identifier)をサポートしないので、Info.plistを使ってくださいという内容の警告です。

Info.plistでの指定方法は[Appleのドキュメント](https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/understanding_utis/understand_utis_declare/understand_utis_declare.html)に詳しく書かれてますが、短くJPEGの例をまとめると、以下のような感じだと思います(上記ドキュメントより引用)。

[code]

     <key>UTExportedTypeDeclarations</key>
            <array>
                <dict>
                    <key>UTTypeIdentifier</key><!--UTI、独自である必要あり（必須）-->
                    <string>public.jpeg</string>
                    <key>UTTypeConformsTo</key><!--属するUTI一覧-->
                    <array>
                        <string>public.image</string>
                        <string>public.data</string>
                    </array>
                    <key>UTTypeTagSpecification</key><!--同じ型を示す他の識別子一覧-->
                    <dict>
                        <key>com.apple.ostype</key><!--OSType(4文字)-->
                        <string>JPEG</string>
                        <key>public.filename-extension</key><!--拡張子-->
                        <array>
                            <string>jpeg</string>
                            <string>jpg</string>
                        </array>
                        <key>public.mime-type</key><!--MIME-->
                        <string>image/jpeg</string>
                    </dict>
                </dict>
            </array>
    
[/code]

またよく使われる[サードパーティUTI](https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/UTIRef/Articles/System-
DeclaredUniformTypeIdentifiers.html)は事前に内蔵されていているので、そちらも参考にされると良いかもしれません。


CC BY-SA 3.0
2017-06-14T17:16:58.737
35578
2017-06-14T17:16:58.737
3974
35554
answer