Objective c 如何从MacOS';s照片库

Objective c 如何从MacOS';s照片库,objective-c,macos,photos,phasset,Objective C,Macos,Photos,Phasset,我想使用解析MacOS照片库中的所有图像。但是,我发现的所有示例仅适用于iOS,如下面的示例,其中检索资产的最后一行在macos framework上不可用: NSMutableArray *photos = [[NSMutableArray alloc] init]; PHFetchOptions *allPhotosOptions = [[PHFetchOptions alloc] init]; allPhotosOptions.sortDescriptors = @

我想使用解析MacOS照片库中的所有图像。但是,我发现的所有示例仅适用于iOS,如下面的示例,其中检索资产的最后一行在macos framework上不可用:

    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命令,或者还有其他方法吗?

MacOS中没有照片框架,或者至少是该框架的主要子集,该框架为应用程序提供对整个照片库的读/写访问权限

macOS中提供照片和PhotoUI,但仅支持特定的应用程序扩展功能:

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

如果您想在macOS上使用完整的照片框架,最好的选择是。

从macOS 10.15 Catalina开始,照片和PhotoUI框架现在在Mac上可以用于Catalyst和AppKit应用程序。所以你现在应该能够将几乎所有使用PhotoKit的iOS代码转移到你的Mac应用程序中,只要它的最低系统要求是10.15