를 호출하지 않습니다NSKeyedUnarchiver 내가 다음 예제를 사용했습니다 initWithCoder
이game state singleton cocos2d, initWithEncoder always returns null
대신 파일을 사용하는, 내가 NSUserDefaults에서 무엇입니까있는 NSData 객체를 사용합니다. 그것은 null이 아니라 오히려 내가 올바르게 인코딩 된 데이터라고 생각하는 데이터가 있고 unarchiveObjectWithData를 실행할 때 initWithCoder를 호출하지 않아서 NSLog를 첫 번째 줄에 넣었습니다.
아이디어가 있으십니까?
+ (void)loadState {
@synchronized([AppStateManager class]) {
if (!sharedAppStateManager) {
[AppStateManager sharedManager];
}
NSUserDefaults *udefs = [NSUserDefaults standardUserDefaults];
NSData *archivedData = [udefs objectForKey:@"AppState"];
NSLog(@"going to unarchive");
[NSKeyedUnarchiver unarchiveObjectWithData:archivedData];
NSLog(@"unarchive complete");
}
}
- (id)initWithCoder:(NSCoder *)decoder {
NSLog(@"init coder");
self = [super init];
if (self != nil) {
[self setUsername:[decoder decodeObjectWithKey:@"username"]];
}
return self;
}
보관 처리자가 예외를 throw합니까? 그렇지 않으면 객체를 반환합니까? 객체를 반환하면 어떤 클래스입니까? –