2013-10-18 2 views
0

그래서 AFPhotoEditorController를 사용하고 있으며 모든 사용자 작업을 저장하고 추적하는 AFPhotoeditorSession이라는 속성이 있습니다.이 세션 클래스는 NSObject에서 상속 한 사용자 지정 개체이며, 나는 대략 봤습니다 NSUser 기본값에 사용자 지정 개체를 저장하는 방법 및 그 클래스가 프로토콜 NSCoding을 준수하는 경우 해당 클래스를 저장할 수 있다는 것을 알게되었습니다. 나는이 클래스를 변경할 수 있는지 여부를 알지 못합니다. 이는 내가 가지고있는 only.h 파일이기 때문입니다. 내 사용자 정의 프레임 워크 AviarySDk.타사 라이브러리 사용자 지정 개체를 NSUSerDefault에 저장

NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject: 
    [self.sessions objectAtIndex:0]]; // self.session an array of one object of AFPhotoeditorSession 
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
     [defaults setObject:myEncodedObject forKey:@"myEncodedObjectKey"]; 
     [defaults synchronize]; 
     NSData *data1 = [defaults objectForKey:@"myEncodedObjectKey"]; 
     AFPhotoEditorSession *obj = (AFPhotoEditorSession *)[NSKeyedUnarchiver unarchiveObjectWithData: data1]; 
     NSLog(@"%@",obj); 

나는 같은 오류가 점점 오전 :

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<AFPhotoEditorSession 0x1c5fa0f0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key modified.' 

그리고 당신은 선언하고 준수하는 범주를 정의하여 당신은 클래스가 NSCoding을 준수 할 수 PhotoEditorSession

답변

0

에서 AFPhotoEditor 세션 클래스를 확인하실 수 있습니다 해당 프로토콜에 연결하고 필요한 메소드를 구현합니다.

+0

나는이 AFPhotoEditorSession에 .m 파일이 없기 때문에 ** initwithencoder ** 또는 NSCoding에 필요한 다른 방법을 구현할 수 있습니다. 주된 문제는 –

+0

@ GauravGarg입니다. 그게 ** 정확히 ** 카테고리를 사용하도록 제안한 이유입니다. 별도의'.m' 파일에 있습니다. –

+0

그래서 AFPhotoeditor 세션의 Readonly 유형 인 –

0

실제로 자신의 범주를 만드는 것은 새로운 ivars가 영구히 추가되거나 변경 될 때 해당 개체와 호환되어야 함을 의미합니다.

올바른 방법은 해당 클래스의 개체 (핵심 값)를 다시 만드는 데 필요한 것이 무엇인지 정확하게 결정한 다음 각 키와 값을 만들어 사전에 넣는 것입니다. 사전을 사용자 기본값으로 설정하십시오. 값을 검색하려면 사전을 꺼내서 해당 값을 사용하여 객체를 인스턴스화합니다.

다른 옵션은 AFPhotoeditor의 작성자에게 직접 요청하거나 직접 요청하고 사용자에게 요청을 보내는 것입니다. 하지만 애드온으로 추가 작업을 수행하면 원래 프레임 워크가 변경 될 때마다 카테고리를 업데이트해야합니다.

+0

하지만 그는 수업의 구성과 공용 인터페이스를 사용할 수 있습니다. 구현 세부 사항을 망칠 필요가 없습니다. –

+0

해당 속성에서 AFPhotoEditorSession의 인스턴스를 가져올 수있는 방법이 없습니다. –

+0

@GauravGarg 그런 다음 디스크에 유지할 수있는 방법이 없습니다. 속성을 사용하여 인스턴스를 재구성 할 수 없으면 컨텍스트가 필요하므로 직렬화 할 수 없습니다. 죄송합니다. –

관련 문제