4

OS X でユーザーの写真ライブラリを反復処理しようとしています。iOS では Photos フレームワークを使用しますが、OS Xでは利用できないようで、代わりに Media Library フレームワークを使用することになっています。ただし、上記のリンクのコードを使用してオブジェクトにアクセスすることはできましたがMLMediaSource、写真アセットを反復処理する方法を理解するのに苦労しています。

メディア ライブラリ フレームワークのドキュメントではmediaObjectForIdentifier:、有望そうに見えるメソッドについて言及していますが、どのような種類の識別子を使用する必要があるかは示されていません。私は iOS にはかなりの経験がありますが、OS X では完全に未経験なので、少し戸惑っています。

ユーザーのライブラリを反復処理して、各写真を NSLog したいだけの場合、どうすればよいでしょうか? 現在の写真ライブラリで機能する限り、メディア ライブラリ フレームワークまたは別のフレームワークを使用しますか?

4

1 に答える 1

5

このフレームワークの操作は難しくありませんが、プロパティを非同期/遅延ロードし、非同期の完了について通知を受けたいのは KVO だけであるため、面倒です。

写真を反復処理する場合、事前に識別子を知る必要はありません。

メディア ライブラリを作成します。

self.library = [[MLMediaLibrary alloc] initWithOptions:options];

の KVO オブザーバーを追加しmediaSourcesます。mediaSources にアクセスします。非 nil の場合は次のステップに進みます。それ以外の場合は、KVO オブザーバーが起動したときに次のステップに進みます。

次のステップでは、ソースを繰り返し、KVO オブザーバーを に追加し、各ソースrootMediaGroupにアクセスします。rootMediaGroup非 nil の場合はイテレータを呼び出すか、そうでない場合は KVO 通知ハンドラから呼び出します。

rootMediaGroup ごとに、上記と同じ戦略に従いますが、mediaObjects. メディア オブジェクトは、最終的に求めているものです。

于 2016-01-22T03:29:09.690 に答える