objective-c - 如何从 MacOS 的照片库中获取所有 PHAssets

标签 objective-c macos photos phasset

我想使用 PHAsset 解析我的 MacOS 照片库中的所有图像.然而,我发现的所有示例都只适用于 iOS,如下所示,其中检索 Assets 的最后一行在 macos 框架上不可用:

    NSMutableArray *photos = [[NSMutableArray alloc] init];
    PHFetchOptions *allPhotosOptions = [[PHFetchOptions alloc] init];
    allPhotosOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];

 // Below compilation error as fetchAssetsWithMediaType is only on iOS framework
    PHFetchResult *allPhotos = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:allPhotosOptions];

我应该在 MacOS(版本 10.13)上使用什么 fetchAssets 命令,或者有其他方法吗?

最佳答案

Photos 框架——或者至少是该框架的主要子集,它为应用程序提供对整个 Photos 库的读/写访问权限——在 macOS 中不可用。

Photos 和 PhotosUI 存在于 macOS 中,但仅用于支持特定的应用程序扩展功能:

  • 照片编辑扩展。用户在单个 Assets 的编辑模式下从照片应用程序调用这些,它提供对该 Assets 的照片/视频数据的直接访问,因此它甚至不使用 PHAsset 类。
  • 照片项目扩展。这些涉及 Assets 集合并有选择地为每个 Assets 加载数据,因此存在更多的 PHAsset/PHImageManager 系统。但是,与 iOS 相比,它仍然是一个缩减的子集(只有项目扩展所需的内容,例如获取该项目中的 Assets ),并且它只能由应用程序扩展程序访问,而不是独立应用程序。

如果您想要 macOS 上的完整照片框架,最好的选择是 file a feature request with Apple .

关于objective-c - 如何从 MacOS 的照片库中获取所有 PHAssets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47652944/

相关文章:

objective-c - 在 NSTextView 中捕获关键事件的最佳方式?

php - Docker没有实时反射(reflect)变化(Laravel)

Mac OSX 10.6 上的 C++ 开发

php - facebook 如何知道需要从 URL 获取哪些图像?

java - 如何使用 android java 创建 facebook 相册并将照片上传到 facebook 相册?

file - 如何创建一个可以在没有 FTP 服务器的情况下将文件上传到页面的网页

ios - 使用指针列表 (where, $in) 解析包含在中的查询约束

ios - 有条件的 if 为 objective-c 导入

objective-c - NSDictionary allKeys 返回 NSArray,而不是 NSSet

macos - 如何以编程方式在 OSX Xcode 项目中设置 WebView 的 URL?