2017-06-24 4 views
0

NSDocumentベースのアプリケーションの次のバージョンでは、ドキュメントパラメータ、つまりInfo.plist> CFBundleDocumentTypesおよびUTExportedTypeDeclarationsの値を改訂します。具体的には、平らなNSPersistentDocumentから文書パッケージ(BSManagedDocumentの助けを借りて)に変更しています。Document Parametersを変更した後、NSCocoaErrorDomain 256を開く* new * docs

改訂されたアプリケーションでは、一般的なアイコンでFinderに表示されますが、そのような新しいドキュメントを閉じて再オープンしようとすると、-[NSDocumentController openDocumentWithContentsOfURL:display:completionHandler:]が失敗し、NSCocoaErrorDomainにコード256、説明MyAppがこのタイプのファイルを開くことができず、失敗の理由MyAppがこのタイプのファイルを開くことができないため、 "newDoc.myExtension"を処理できませんでした。

私はいくつかの重要なパラメータCFBundleDocumentTypesとUTExportedTypeDeclarationsがあることを理解していますが、これらはすべて正しいか、このエラーが発生します。この場合、それらは正しい。私は、私の組み込み製品のInfo.plistと、動作する別の同様のアプリのInfo.plistを比較することでこれを確認しました。

また、LSRegisterURL()inUpdate = trueをmain()から呼び出そうとしましたが、それは役に立ちませんでした。

何が問題なのでしょうか?私はMacOS 10.12.6で動作していて、MacOS 10.13 SDKとXcode 9で構築しています。

答えて

1

明らかに問題は、Launch Servicesデータベースを更新することです。私はを改訂したInfo.plistを新しいアプリケーションを/Applicationsにコピーし、古いバージョンを置き換えてからこのコピーを1回起動しました。この2つのステップの後、Finderウィンドウを開いたときにドキュメントアイコンが正しくなり、新しいアプリケーションを再起動すると、エラーなしで独自の新しいドキュメントが再び開くようになりました。

アップデート:今日(macOS 10.13 Beta 8)私は同じ問題がありましたが、修正されたアプリケーションを/アプリケーションにインストールすると機能しませんでした。しかし、この時、ターミナルで次のコマンドを実行し、その後、私のアプリをリニューアルにより起動Servicesデータベースを再構築、作業をした:上記の

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain u -domain s -domain l -v

副作用は、いくつかのアプリは、一般的なアイコンを持っているということですdockとcmd-tabアプリケーションスイッチャーを再起動するまで実行します。

は、私はどちらかの打ち上げサービスがはるかに後者は、現在実行中、または全く、またはその両方を登録していないのXcodeのDerivedDataからアプリケーションを実行している唯一のものである場合でも、XcodeののDerivedDataフォルダ内のアプリの上/Applications中のアプリを好むと思います。

LSRegisterURL()を呼び出すのは同じ効果があったはずですが、明らかにそうではないようです。

関連する問題