PHAsset获取原始文件名称

我想知道是否有任何方法使用PHAsset获取原始文件名?

我使用下面的代码来提取文件信息。

[[PHImageManager defaultManager] requestImageDataForAsset:asset options:requestOption resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) { entity.fileUrl = [info objectForKey:@"PHImageFileURLKey"]; entity.filename = [[NSFileManager defaultManager] displayNameAtPath:[ entity.fileUrl path]]; }]; 

但是,它不会返回原始名称,而是格式为“img_123”的名称,我刚刚检查了官方的苹果文档。 已经引入了一个新的类PHAssetResource和在iOS 9+中可用的属性originalFilename 。 问题是我使用基于Photos框架的图像select器库CTAssetsPickerController ; 它返回PHAsset图像作为PHAsset对象。 PS。 我正在寻找与iOS 8兼容的解决scheme:)。 谢谢!

在iOS 8上,您的解决scheme是正确的(也是唯一的方法)来获取文件名。

在iOS 9上这个工作:

 NSArray *resources = [PHAssetResource assetResourcesForAsset:asset]; NSString *orgFilename = ((PHAssetResource*)resources[0]).originalFilename; 

也许你可以使用这个方法,它可以在iOS8上面运行:

  [asset requestContentEditingInputWithOptions:options completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) { CIImage *fullImage = [CIImage imageWithContentsOfURL:contentEditingInput.fullSizeImageURL]; NSLog(@"%@",contentEditingInput.fullSizeImageURL);//get url NSLog(@"%@", fullImage.properties.description);//get {TIFF}, {Exif} }]; 

用一行代码获取文件名的简短方法。 资产具有用于访问文件名的属性。

  NSString*FileName=[asset valueForKey:@"filename"]; NSLog(@"File name %@",FileName); Its done. Note: Accepted answer takes lots of time to load a phasset but it works.