Вы когда-нибудь делали следующее:
1) В какой-то момент тип UTI был com.apple.appname.document
, и в то время вы создали пользовательский документ вашего типа в файловой системе.
3) Затем вы изменили настройки UTI в своем приложении.
4) Вы просматриваете информацию для файла, созданного на шаге 1, и этот файл не изменился с момента его создания?
Если это так, попробуйте использовать Терминал для touch
рассматриваемого файла, чтобы вызвать его переиндексацию Spotlight, а затем по-другому взглянуть.
В противном случае может также помочь убедиться, что вы удалили все посторонние копии своего приложения и затем перестроили базу данных Launch Services (вы можете использовать для этого утилиту, которую я написал: Перестроить базу данных Launch Services .
В целом информация о вашем Info.plist в порядке, хотя я бы порекомендовал следующее:
В вашем UTExportedTypeDeclarations
под UTTypeTagSpecification
указывайте только OSType (код типа файла), если вы действительно знаете, что делаете. Это означает, что вы, конечно, не используете тип, подобный 'appe'
, который состоит из строчных букв, так как они зарезервированы для Apple. Я знаю, что вы были обязаны зарегистрировать коды создателей (CFBundleSignature
s) в Apple (я сам сделал несколько), хотя я не уверен насчет типов файлов и того, делают ли они это до сих пор или нет. Если вы укажете какой-либо произвольный код типа файла и не будете знать, какие именно коды использовались за последние 30 лет, вы рискуете конфликтовать с существующими определенными типами.
Измените тип документа UTI, чтобы он был более специфичным для вашего типа. Что-то вроде com.mycompany.appname.extension
.
Затем измените запись документа CFBundleDocumentTypes
, удалив запись CFBundleTypeExtensions
и добавив LSItemContentTypes
, как показано ниже:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>LSItemContentTypes</key>
<array>
<string>com.mycompany.appname.extension</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>Icon</string>
<key>CFBundleTypeName</key>
<string>Custom Document</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>NSDocumentClass</key>
<string>MyDocument</string>
</dict>
</array>
Затем, наконец, убедитесь, что все ключи в вашем Info.plist не переопределяются локализованными версиями в файле InfoPlist.strings
, если они у вас есть.