以编程方式访问Mac OS X上的照片库:适用于Mac的PhotoKit/Photos Framework

Pie*_*e F 8 objective-c photos photokit

在Objective-C中,有一个照片框架又名PhotoKit,它使iOS开发人员能够访问iPhone和iPad上的照片库,并检索图片/视频及其元数据.

Mac开发人员将如何执行类似的任务?似乎PhotoKit仅适用于iOS 8.0.是否有相当于Mac OS X的照片框架?

Pie*_*e F 11

媒体库框架是去的地方.

用法:

@import MediaLibrary;

- (void) awakeFromNib
{
  NSDictionary *options = @{
     MLMediaLoadSourceTypesKey: @(MLMediaSourceTypeImage),
     MLMediaLoadIncludeSourcesKey: @[MLMediaSourcePhotosIdentifier]
  };

  MLMediaLibrary *mediaLibrary = [[MLMediaLibrary alloc] initWithOptions:options];
  self.mediaLibrary = mediaLibrary;

  [mediaLibrary addObserver:self
                 forKeyPath:@"mediaSources"
                    options:0
                    context:(__bridge void *)@"mediaLibraryLoaded"];

  [mediaLibrary mediaSources]; // returns nil and starts asynchronous loading
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
                        change:(NSDictionary *)change context:(void *)context
{
   if (context == (__bridge void *)@"mediaLibraryLoaded") {
      // Media Library is loaded now, we can access mediaSources
      MLMediaSource *mediaSource = [self.mediaLibrary.mediaSources objectForKey:@"com.apple.Photos"];
   }
}
Run Code Online (Sandbox Code Playgroud)

库背后的概念是您必须请求它读取对象的属性,该属性返回空引用.然后使用键值观察器订阅此属性,并等待它加载.然后你可以用相同的原理检索下一个孩子等等......