我想對數據進行編碼類型CGPDFPageRef像這樣(源代碼),但我得到以下錯誤(控制檯錯誤消息):如何在Objective-c中編碼非C數據類型?
源代碼:
//Get a CGPDFPageRef to page 20 of the current PDF document ref
CGPDFPageRef pageRef = CGPDFDocumentGetPage(myDocumentRef, 20);
//Set up the paths for writing
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"thisPage.wrapit"];
//Encode the CGPDFPageRef to the path
NSValue *pageRefObj = [NSValue value:&pageRef withObjCType:@encode(CGPDFPageRef)];
[NSKeyedArchiver archiveRootObject:pageRefObj toFile:path];
控制檯錯誤消息:
-[NSKeyedArchiver encodeValueOfObjCType:at:]: unknown type encoding ('^')'
我的理論:
我認爲錯誤是因爲編碼器無法識別CGPDFPageRef類型。所以...我如何編碼/存檔/存儲非對象數據類型(非C)?順便說一下,任何的方式,這將允許我將CGPDFPageRef存儲到磁盤就足夠了。謝謝。
Side-Note:
Apple Docs還聲明變長數據結構不能被編碼?我不知道這是否也是問題。 PDFPages在磁盤上大小不同,那麼CGPDFPageRef不透明類型會被視爲可變長度?我不知道。太糟糕了,這是不透明的。
NSData的dataWithBytes:方法有幫助嗎? – 2011-02-23 03:58:23
@darren感謝您的評論。你能詳細說明一下嗎?如何獲取CGPDFPageRef字節格式? – m0rtimer 2011-02-23 03:59:59
@darren我玩過並設法獲取CGPDFPageRef的字節。但是我試圖將數據字節轉換回CGPDFPageRef時卡住了!有任何想法嗎? – m0rtimer 2011-02-23 04:18:44