Bartłomiej Semańczyk Bartłomiej Semańczyk - 5 months ago 98
Swift Question

How to get the name of file for reference url using Photos framework?

This is how I get an

NSURL
:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {

if let referenceUrl = info[UIImagePickerControllerReferenceURL] as? NSURL {
//access the file name
}
}


It was using
ALAssetsLibrary
:

let assetsLibrary = ALAssetsLibrary()
assetsLibrary.assetForURL(referenceUrl, resultBlock: { asset in

let filename = asset.defaultRepresentation().filename()

}, failureBlock: nil)


but since iOS 9 it is deprecated.

Answer

The simplest answer:

if let asset = PHAsset.fetchAssetsWithALAssetURLs([referenceUrl], options: nil).firstObject as? PHAsset {

    PHImageManager.defaultManager().requestImageDataForAsset(asset, options: nil, resultHandler: { _, _, _, info in

        if let fileName = (info?["PHImageFileURLKey"] as? NSURL)?.lastPathComponent { 
            //do sth with file name
        }
    })
}
Comments