在 OS X 上遍历照片库?
Iterate through photo library on OS X?
我正在尝试在 OS X 上遍历用户的照片库。在 iOS 上,我会使用照片框架,但显然 that's not available on OS X,我们应该改用媒体库框架。然而,虽然我能够使用上面链接的代码来访问 MLMediaSource
对象,但我很难弄清楚如何遍历照片资产。
Media Library Framework documentation 引用了 mediaObjectForIdentifier:
方法,这听起来很有前途,但并未指明应使用哪种标识符。我对 iOS 相当有经验,但在 OS X 上是一个完整的 n00b,所以我感觉有点迷茫。
如果我只想遍历用户的图库,对每张照片进行 NSLog,我该怎么做呢?使用媒体库框架,还是使用适用于当前照片库的其他框架?
这个框架不难使用,但是很乏味,因为它async/lazy 加载属性,而 KVO 是唯一想要收到异步完成通知的。
如果要迭代照片,不需要提前知道标识符。
创建媒体库:
self.library = [[MLMediaLibrary alloc] initWithOptions:options];
为 mediaSources
添加一个 KVO 观察器。访问 mediaSources,如果 non-nil,则进入下一步,否则当你的 KVO 观察者触发时进入下一步。
在下一步中,迭代源,在 rootMediaGroup
上添加一个 KVO 观察器,并在每个源上访问 rootMediaGroup
。如果它是 non-nil,现在调用你的迭代器,否则从 KVO 通知处理程序调用它。
对于每个 rootMediaGroup,遵循与上述相同的策略,但对于 mediaObjects
。媒体对象是您最终追求的东西。
我正在尝试在 OS X 上遍历用户的照片库。在 iOS 上,我会使用照片框架,但显然 that's not available on OS X,我们应该改用媒体库框架。然而,虽然我能够使用上面链接的代码来访问 MLMediaSource
对象,但我很难弄清楚如何遍历照片资产。
Media Library Framework documentation 引用了 mediaObjectForIdentifier:
方法,这听起来很有前途,但并未指明应使用哪种标识符。我对 iOS 相当有经验,但在 OS X 上是一个完整的 n00b,所以我感觉有点迷茫。
如果我只想遍历用户的图库,对每张照片进行 NSLog,我该怎么做呢?使用媒体库框架,还是使用适用于当前照片库的其他框架?
这个框架不难使用,但是很乏味,因为它async/lazy 加载属性,而 KVO 是唯一想要收到异步完成通知的。
如果要迭代照片,不需要提前知道标识符。
创建媒体库:
self.library = [[MLMediaLibrary alloc] initWithOptions:options];
为 mediaSources
添加一个 KVO 观察器。访问 mediaSources,如果 non-nil,则进入下一步,否则当你的 KVO 观察者触发时进入下一步。
在下一步中,迭代源,在 rootMediaGroup
上添加一个 KVO 观察器,并在每个源上访问 rootMediaGroup
。如果它是 non-nil,现在调用你的迭代器,否则从 KVO 通知处理程序调用它。
对于每个 rootMediaGroup,遵循与上述相同的策略,但对于 mediaObjects
。媒体对象是您最终追求的东西。