2016-05-14 7 views
2

Mac OS X(10.11)用のPhotos拡張機能を開発中です。未解決の識別子「PHPhotoLibrary」の使用

PhotosとPhotosUIのフレームワークをインポートしました。

PHPhotoLibrary.sharedPhotoLibrary()を呼び出そうとすると、何も問題はありません。

これはXcodeの7.3.1(7D1014)でエラーが発生:

Use of unresolved identifier 'PHPhotoLibrary' 

は、誰がこれを経験したり、問題を引き起こしている可能性が何を知っていますか?

+2

はい、このAPIはOS Xにはありません。 – jtbandes

+0

本当ですか?まあそれは問題を説明するだろう。私は資産を保存しようとしており、変更要求のためにライブラリを呼び出す必要があると考えました。もっと読む必要があります。ありがとう! – adamteale

答えて

1

あなたは、iOSやOS Xのいずれかで写真編集の拡張子を作るためにPHPhotoLibraryクラスは必要ありません、およびOS Xであなたがはそれを使用することはできません。

写真編集拡張のワークフロー全体がPHContentEditingControllerプロトコルを使用します。どちらのプラットフォームでも、写真編集拡張機能のメインビューコントローラはこのプロトコルを実装しています。これはstartContentEditingWithInput:placeholderImage:メソッドで編集するアセットを提供し、ユーザーが編集を完了するとfinishContentEditingWithCompletionHandler:メソッドを呼び出すので、最終的な品質の編集を適用して出力を提供することができます。

通知「私はユーザーが編集を完了したとき」と言います。写真ライブラリに保存することは、拡張コードで行うこととは異なります。代わりにPhotosが最終的なレンダリング出力を要求し、Photosがそれをライブラリに保存する処理を行います。あなたのfinishContentEditingWithCompletionHandler:方法で

、あなたがする必要があります

  1. は(あなたがstartContentEditingWithInput:placeholderImage:で受信)PHContentEditingInputからPHContentEditingOutputを作成します。
  2. PHContentEditingOutputが
  3. を指定することrenderedContentURLに(ビデオアセットのため、またはQuickTimeムービーファイル)JPEGファイルとして出力を保存し、それをあなたのPHContentEditingOutputを渡して、あなたに渡されたcompletionHandlerブロックを呼び出します。

この補完ハンドラを呼び出すと、編集したアセットをライブラリに保存する写真が表示されます。

+0

Ricksterは私の投稿に返信してくれてありがとう。私はそれを正確に持っていますが、renderedContentUrlに保存するときにエラーが発生しています - Xcodeはファイルが既に存在すると言います。私は、ファイルを保存するためにエクステンションに権限を与える必要があるPHPhotoライブラリに、エラーが関係していると考えました。 – adamteale

+1

権限の問題はありません。ユーザは、エクステンションを選択してそのアセットを編集したため、エクステンションに暗黙のうちに編集されたアセットを書き込む権限を与えました。レンダリングする前にrenderedContentURLにあるものを削除する必要があることがあります。 – rickster

+0

MacOSでPHPhotoLibraryを使用できない場合は、Mac上のPhotosにアクセスするための他のAPIはありますか? –

関連する問題