如何从 PHAssetCollection 正确获取自定义专辑
Posted
技术标签:
【中文标题】如何从 PHAssetCollection 正确获取自定义专辑【英文标题】:How to properly fetch a custom album from PHAssetCollection 【发布时间】:2018-06-25 19:16:17 【问题描述】:我已经创建了一个自定义相册,现在我正在尝试从 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(内部版本 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 活跃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;
【问题讨论】:
【参考方案1】:我知道发生了什么以及如何解决它,尽管我不完全理解为什么对象不返回 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;
【讨论】:
以上是关于如何从 PHAssetCollection 正确获取自定义专辑的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHFetchOptions.predicate 从 PHAssetCollection 获取 PHAsset 的问题
如何知道 PHAssetCollection 是不是是最近删除的集合?
创建后如何获得指向新 PHCollectionList(或 PHAssetCollection)的指针
如何编辑或重命名 PHAssetCollection LocalizedTitle?
何时使用 PHAsset、PHCollection、PHAssetCollection 和 PHCollectionList