내가 데이터 유형과 같이 CGPDFPageRef (소스 코드)를 인코딩하기 위해 노력하고 있지만, 다음과 같은 오류를 얻고있다 (콘솔 오류 메시지) :Objective-c에서 non-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 형식이 인코더에서 인식되지 않기 때문에 오류라고 생각합니다. 그럼 ... 어떻게하면 개체가 아닌 데이터 형식 (non-C)을 인코딩/보관/저장할 수 있습니까? 그런데 ANY 디스크에 CGPDFPageRef를 저장할 수있는 방법이면 충분합니다. 고맙습니다.
사이드 노트 :
Apple 문서에는 가변 길이 데이터 구조를 인코딩 할 수 없다고 명시되어 있습니까? 이것이 문제가 될지 모르겠습니다. PDFPages는 디스크의 크기가 다양하기 때문에 CGPDFPageRef 불투명 유형이 가변 길이로 간주됩니까? 나는 몰라. 너무 불투명합니다.
NSData의 dataWithBytes : 메소드가 도움이 될까요? 댓글 달기 주신 덕분에 @Darren –
당신은 정교 할 수 있습니까? 어떻게하면 CGPDFPageRef를 바이트 형태로 만들 수 있습니까? – m0rtimer
@darren 나는 놀아서 CGPDFPageRef의 바이트를 얻을 수 있었다. 하지만 데이터 바이트를 다시 CGPDFPageRef로 변환하려고 할 때 막혔습니다! 어떤 아이디어? 덕분에 – m0rtimer