4

我试图在 OS X 上遍历用户的照片库。在 iOS 上,我会使用 Photos 框架,但显然这在 OS X 上不可用,我们应该使用 Media Library 框架。但是,虽然我能够使用上面链接的代码来访问MLMediaSource对象,但我很难弄清楚如何遍历照片资产。

媒体库框架文档引用了一种mediaObjectForIdentifier:方法,这听起来很有希望,但没有指出应该使用哪种标识符。我对 iOS 相当有经验,但在 OS X 上却是一个完整的 n00b,所以我感觉有点失落。

如果我只是想遍历用户的库,NSLog'ing 每张照片,我该怎么做?要么使用媒体库框架,要么使用其他框架,只要它适用于当前的照片库?

4

1 回答 1

5

这个框架并不难使用,但它很乏味,因为它异步/延迟加载属性,并且 KVO 是唯一希望被通知异步完成的通知。

如果你想迭代照片,你不需要提前知道标识符。

创建媒体库:

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

为 .添加一个 KVO 观察者mediaSources。访问 mediaSources,如果非零,则进行下一步,否则在您的 KVO 观察者触发时进行下一步。

在下一步中,迭代源,在 上添加 KVO 观察者rootMediaGroup,并访问rootMediaGroup每个源。如果它不是 nil,请立即调用您的迭代器,否则从 KVO 通知处理程序中调用它。

对于每个 rootMediaGroup,遵循与上述相同的策略,但对于mediaObjects. 媒体对象是你最终追求的东西。

于 2016-01-22T03:29:09.690 回答