C# IOS 14请求有限照片访问

C# IOS 14请求有限照片访问,c#,ios,.net,xamarin,C#,Ios,.net,Xamarin,我试图使用PHPickerController和access PHAsset来获取文件名和文件大小,但PHAsset为空 var config=new PHPickerConfiguration(PHPhotoLibrary.SharedPhotoLibrary){ 过滤器=PHPickerFilter.ImagesFilter, SelectionLimit=1 }; var picker=新的PHPickerViewController(配置){ ModalPresentationStyle

我试图使用PHPickerController和access PHAsset来获取文件名和文件大小,但PHAsset为空

var config=new PHPickerConfiguration(PHPhotoLibrary.SharedPhotoLibrary){
过滤器=PHPickerFilter.ImagesFilter,
SelectionLimit=1
};
var picker=新的PHPickerViewController(配置){
ModalPresentationStyle=UIModalPresentationStyle.Popover,
委派=新的ImagePickerDelegate((文件大小、文件名、url)=>{
})
};
ViewController.PresentViewController(选择器,true,null);
公共类ImagePickerDelegate:phPickerViewController Delegate
{
公共图像PickerDelegate(操作)
{
行动=行动;
}
公共行动行动{get;}
公共重写void DidFinishPicking(PHPickerViewController选择器,PHPickerResult[]结果)
{
picker.DismissViewController(true,null);
foreach(结果中的var结果)
{
var asset=PHAsset.FetchAssets(result.AssetIdentifier,null)?.firstObject作为PHAsset;
//资产为空
var fileSize=asset.ValueForKey((NSString)“fileSize”);
}
}
}

正如您在图像中看到的,请求对话框的显示和代码不会在下面的行中暂停

var asset=PHAsset.FetchAssets(result.AssetIdentifier,null)?.firstObject作为PHAsset

并返回null

您可以使用方法获取PHAsset对象,然后它将返回值

示例代码如下:

public override void DidFinishPicking(PHPickerViewController picker, PHPickerResult[] results)
{
    picker.DismissViewController(true, null);

    foreach (var result in results)
    {
       var refID = result.AssetIdentifier;
       string[] refIDs = new string[] { refID };
       var asset = PHAsset.FetchAssetsUsingLocalIdentifiers(refIDs, null)?.firstObject as PHAsset;
       
       // var fileSize = asset.ValueForKey((NSString)"fileSize");
    }
}
也可以看看这个