Подтвердить что ты не робот

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" Я только что проверил официальные документы Apple. был введен новый класс PHAssetResource и свойство originalFilename, которое доступно в iOS 9+. Проблема в том, что я использую библиотеку выбора изображений CTAssetsPickerController, которая основывается на фреймворке; он возвращает выбранное изображение как объект PHAsset. PS. Я ищу решение, совместимое с iOS 8:). Спасибо!

4b9b3361

Ответ 1

В iOS 8 ваше решение - это правильный (и единственный подход), чтобы получить имя файла вообще.

В iOS 9 это работает:

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

Ответ 2

Возможно, вы можете использовать метод, он работает выше 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}
}];

Ответ 3

Короткий способ получить имя файла с одной строкой кода. У объекта есть свойство для доступа к имени файла.

 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.