Создание приложения, которое может открывать файлы заданного формата - PullRequest
2 голосов
/ 15 июня 2010

У меня есть приложение, написанное на Obj-C.В info.plist есть список типов файлов, которые может открыть приложение.Я почти уверен, что это работает, потому что когда я пытаюсь перетащить файл недопустимого типа, приложение не выделяется, но когда я перетаскиваю файл приемлемого типа, оно выделяется и позволяет мне удалить.

Когда я перетаскиваю, приложение запускается корректно, однако, затем я получаю диалоговое окно с текстом:

Не удалось открыть документ «foo.tiff».DocView не может открывать файлы в формате «TIFF File».

У меня действительно есть это в моем info.plist

<key>CFBundleTypeExtensions</key>
<array>
   <string>tif</string>
   <string>tiff</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>TIFFFile.icns</string>
<key>CFBundleTypeName</key>
<string>TIFF File</string>
<key>CFBundleTypeOSTypes</key>
<array>
   <string>TIFF</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Documents/</string>

Спасибо.

Ответы [ 3 ]

4 голосов
/ 15 июня 2010

Действительно ли ваше приложение обрабатывает открытие файла?

Если это приложение NSDocument, вам необходимо реализовать один из методов чтения файлов, например readFromData:ofType:error:.В обычном NSApplication делегат вашего приложения должен обработать его в application:openFile:.В обоих случаях вам нужно вернуть YES, чтобы подтвердить, что вы успешно открыли файл.

Если вы реализовали это, отправляется ли сообщение?

1 голос
/ 15 июня 2010

Во-первых, отображаемая часть Info.plist находится в массиве CFBundleDocumentTypes, а не на верхнем уровне Info.plist, верно?

Во-вторых, в LSHandlerRank у вас есть Documents /, что не является допустимым значением, равно как Documents.

В-третьих, вам, вероятно, нужно добавить NSDocumentClass.

0 голосов
/ 20 мая 2019

Еще одна вещь, которая меня иногда привлекает, это то, что вам нужно включить $ (PRODUCT_MODULE_NAME).перед именем вашего класса.Если вы используете выпадающее меню в 10.2.1 в проекте Swift, Xcode, похоже, не поместит полностью квалифицированное имя для вашего класса в это поле.В предыдущих версиях это было так.

Я также подозреваю, но не доказал, что класс и любые классы, наследуемые документом, должны быть Public или Open.

...