2015-09-21 9 views
14

मुझे आश्चर्य है कि 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 और संपत्ति originalFilename पेश की गई है जो आईओएस 9 + में उपलब्ध है। समस्या यह है कि मैं छवि पिकर लाइब्रेरी CTAssetsPickerController का उपयोग करता हूं जो फ़ोटो फ्रेमवर्क पर आधारित है; यह PHAsset ऑब्जेक्ट के रूप में उठाई गई छवि को वापस लाता है। पुनश्च। मैं समाधान की तलाश में हूं जो आईओएस 8 के साथ संगत है :)। धन्यवाद!

उत्तर

36

आईओएस 8 पर आपका समाधान फ़ाइल नाम प्राप्त करने के लिए सही (और केवल दृष्टिकोण) है।

आईओएस 9 पर इस काम करता है:

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

आईओएस 8 या पिछले संस्करण के लिए मुझे क्या करना चाहिए? – iHart

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} 
}]; 
+0

अरे धन्यवाद। मैंने स्वीकार किए गए उत्तर में सुझाए गए दृष्टिकोण का उपयोग किया। लेकिन स्रोत (हेडर फाइल) में खुदाई करने के बाद मैंने पाया कि मैं आपके समान दृष्टिकोण का उपयोग कर सकता हूं – ProblemSlover

2

लघु तरीका है। संपत्ति का नाम फ़ाइल नाम तक पहुंचने के लिए संपत्ति है।

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. 
संबंधित मुद्दे