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

时间:2018-06-25 19:16:17

标签: c# xamarin phphotolibrary

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

我正在使用Visual Studio 2017 Xamarin C#ios 11.4。
在Info.plist中设置的权限 在执行此步骤之前,我正在测试验证用户是否有权访问照片库。

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

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

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

日期/时间:2018-06-25 18:05:54 -0400    操作系统版本:iPhone OS 11.4.1(Build 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) 父级:推出[1] PID:4415

持续时间:0.80秒 步骤:16(50ms采样间隔)

硬件型号:J71AP 活动cpus: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;
}

1 个答案:

答案 0 :(得分:0)

我弄清楚发生了什么事以及如何解决它,尽管我不完全理解为什么对象不返回null而是崩溃的原因,也许这是一个错误。

最后,问题在于谓词未正确传递。由于我正在专门寻找自定义相册,因此我还对搜索进行了配对,仅包括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;
    }