2011-05-24 11 views
7

मैं एक यूआईएसक्रॉल व्यू में एक पीडीएफ प्रदर्शित करता हूं। ऐसा करने के लिए मैं का उपयोग करें: (: withExtension 3.1 के लिए मौजूद नहीं है NSBundle URLForResource)NSString पथ को CFURLRef में परिवर्तित करने के लिए कैसे करें (आईओएस 3.1 के लिए)?

मैं में मेरी कोड बदल गया:

NSString *fullPath = [[NSBundle mainBundle] pathForResource:@"salonMap" ofType:@"pdf"]; 
NSLog(@"%@", fullPath); 
CFStringRef fullPathEscaped = CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)fullPath, NULL, NULL,kCFStringEncodingUTF8); 
CFURLRef urlRef = CFURLCreateWithString(NULL, fullPathEscaped, NULL); 
myDocumentRef = CGPDFDocumentCreateWithURL(urlRef); 

myDocumentRef = CGPDFDocumentCreateWithURL((CFURLRef)[[NSBundle mainBundle] URLForResource:@"salonMap" withExtension:@"pdf"]); 

अब, मैं यह एक आईओएस 3.1 पर काम करने की कोशिश

लेकिन यह एक

<Error>: CFURLCreateDataAndPropertiesFromResource: failed with error code -15 

मैं सटीक NSLog लॉग

कि करने के लिए सुराग
/var/mobile/Applications/1CF69390-85C7-45DA-8981-A279464E3249/myapp.app/salonMap.pdf" 

मैं इसे कैसे ठीक करूं?

उत्तर

9

NSURL interchangeable CFURLRef के साथ टोल-फ्री ब्रिजिंग के लिए धन्यवाद। इसे आज़माएं:

NSString *pdfPath = [[NSBundle mainBundle] 
        pathForResource:@"salonMap" ofType:@"pdf"]; 
NSURL *pdfUrl = [NSURL fileURLWithPath:pdfPath]; 
CGPDFDocumentRef pdfRef = CGPDFDocumentCreateWithURL((CFURLRef)pdfUrl); 
2

यह उल्लेख करना महत्वपूर्ण है कि यदि आप एआरसी का उपयोग कर रहे हैं तो यह अब काम नहीं करेगा। नतीजतन आपको एक ब्रिज कास्ट बनाने की आवश्यकता होगी। नीचे देखें:

NSString *pdfPath = [[NSBundle mainBundle] 
       pathForResource:@"salonMap" ofType:@"pdf"]; 
NSURL *pdfUrl = [NSURL fileURLWithPath:pdfPath]; 
CGPDFDocumentRef pdfRef = CGPDFDocumentCreateWithURL((__bridge CFURLRef)pdfUrl); 
संबंधित मुद्दे