【问题标题】:How to get all PHAssets from MacOS's Photo Library如何从 MacOS 的照片库中获取所有 PHAsset
【发布时间】:2017-12-05 11:49:09
【问题描述】:

我想使用 PHAsset 解析我的 MacOS 照片库中的所有图像。但是,我发现的所有示例都仅适用于 iOS,如下面的示例,其中检索资产的最后一行在 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 命令,或者有其他方法吗?

【问题讨论】:

    标签: objective-c macos photos phasset


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      从 macOS 10.15 Catalina 开始,Photos 和 PhotosUI 框架现在可以在 Mac 上使用,适用于 Catalyst 和 AppKit 应用程序。因此,您现在应该能够将几乎所有使用 PhotoKit 的 iOS 代码转移到您的 Mac 应用程序中,只要它具有 10.15 作为最低系统要求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-29
        • 2019-11-28
        • 1970-01-01
        • 1970-01-01
        • 2018-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多