今回はモデルオブジェクトのコンテンツ(写真やビデオの実データ)の編集を扱います。PHAssetのコンテンツの編集手順モデルオブジェクトのコンテンツの編集はPHAssetの場合のみ可能です。PHAssetのコンテンツの編集手順について説明していきます。canPerformEditOperation:メソッドを使用して編集処理がサポートされているかをチェックします。PHAssetの編集セッションを開始するために必要な情報をリクエストします。option引数には、[4]で作成するPHContentEditingInputRequestOptionsを渡します。その時に行う処理を記述します。このオブジェクトを使用してコンテンツの編集に必要なデータ(Assetのプロパティやコンテンツ自体のURLなど)を取得できます。2つめの引数のNSDictionaryにはリクエストのステートの状態が格納されます。PHContentEditingInputRequestOptionsを作成PHContentEditingInputRequestOptionsのcanHandleAdjustmentDataプロパティにblockをセットしています。このblockはPHAssetに対する以前の編集を続行できるかどうかを判断する必要がある時によばれます。以前行なった編集を再現したり、加工を加えたりすることができます。NOを返した場合は、以前行なった編集がレンダリングされたデータが提供されます。PHAdjustmentDataについては[6]で説明します。CIImageオブジェクトを作成します。Imageのフィルターを適用し、NSDataを作成します。PHAdjustmentDataを作成PHAdjustmentDataオブジェクトの作成を行います。編集を再現するための「レシピ」になります。フィルターアプリなら、ユーザーに選択されたフィルタやパラメータを保存しておきます。PHAdjustmentDataを使用して、編集をレジュームできます。ここでは、フィルタ名の文字列を保存するようにしています。ここで作成するPHAdjustmentDataをチェックして処理を分けています。[6]で作成したPHAdjustmentDataオブジェクトをセットしています。Assetの編集を実行Assetのコンテンツの編集を実行します。PHPhotoLibraryオブジェクトのperformChanges:completionHandler:メソッドを使用します。1つ目の引数のblock内に編集処理を記述します。PHAssetChangeRequestを作成し、contentEditingOutputプロパティに[8]で作成したPHContentEditingOutputオブジェクトをセットします。2つめのblockに処理完了時の処理を記述します。編集処理を実行したタイミングで以下のようなダイアログが表示されます。選択すると、変更が実行されます。選択すると、completionHandlerのblockの引数にNSErrorオブジェクトが渡されます。-1.)」)まとめ今回はモデルオブジェクトのコンテンツ自体の編集について説明しました。プロパティの編集に比べて手順は多くなりますが、比較的簡単にコンテンツ自体を編集することができます。次回はモデルオブジェクトの削除を扱います。アプリに関するお仕事をしています。アプリの実装に関する情報を中心にお届けします。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。