如何从 PHAssetCollection 中正确获取自定义相册

How to properly fetch a custom album from PHAssetCollection

我已经创建了一个自定义相册,现在我正在尝试从 FTP 网站下载视频并将其移动到自定义相册。

我正在使用 Visual Studio 2017 Xamarin C# ios 11.4.
Info.plist 中设置的权限 在此块之前,我正在测试以验证用户是否已获得访问照片库的授权。

这是我第一次使用 PHPhotoLibrary,我找不到很多 C# 代码示例。

没有产生错误,只是在 PHFetchReult fetchResult 开头的行崩溃。

已更新 在我的 iPad 上的日志中找到了这个。

Date/Time: 2018-06-25 18:05:54 -0400 OS 版本:iPhone OS 11.4.1(内部版本 15G5072a) 架构:arm64 报告版本:26

数据来源:KPerf轻量化PET 内核缓存:0xffffffe000000000 07AF39CA-659D-3636-4A4A-FE05631AA416 原因:UIKit-runloop-AppStore:超时 816ms

命令:AppStore 路径:/Applications/AppStore.app/AppStore 标识符:com.apple.AppStore 版本:3.0 (1) 父级:launchd [1] PID: 4415

时长:0.80s 步数:16(50ms采样间隔)

硬件型号:J71AP 活跃 CPU:2

private PHAssetCollection FindAlbum(string title)
{
    PHAssetCollection photoAlbum = null;

    var fetchOptions = new PHFetchOptions() { Predicate = 
        NSPredicate.FromFormat(string.Format("title={0}", title)) };
    PHFetchResult fetchResult = PHAssetCollection.FetchAssetCollections(PHAssetCollectionType.Album, PHAssetCollectionSubtype.Any, options: fetchOptions); 

    if (fetchResult.firstObject != null)
    {
        photoAlbum = (PHAssetCollection)fetchResult.firstObject;
    }
    return photoAlbum;
}

虽然我不完全理解为什么对象不是 return 而是崩溃,但我弄清楚了发生了什么以及如何解决它,也许这是一个错误。

最后,问题是谓词没有被正确传递。我还配对了搜索以仅包含 RegularAlbums 的子类型,因为我正在专门寻找自定义专辑。

希望这对 C# 世界中的其他人有所帮助:)

   private PHAssetCollection FindAlbum(string title)
    {
        PHAssetCollection photoAlbum = null;
        var arguments = new NSObject[] { NSObject.FromObject( title) };
        var fetchOptions = new PHFetchOptions() { Predicate = NSPredicate.FromFormat("title=%@", arguments) };

        PHFetchResult fetchResult = PHAssetCollection.FetchAssetCollections(PHAssetCollectionType.Album, PHAssetCollectionSubtype.AlbumRegular, fetchOptions);

        if (fetchResult.firstObject != null)
        {
            photoAlbum = (PHAssetCollection)fetchResult.firstObject;

        }
        return photoAlbum;
    }