핵심 데이터에서 간단히 golferObject (변형 가능 유형) 및 playerId (문자열) 만 포함하는 GolferEntity라는 간단한 엔티티를 설정했습니다. 이 코드는 나에게 읽는 런타임 오류를주고있다NSKeyedArchiver가 호출되지 않고 할당 해제 된 -finishEncoding
- (void)addOrUpdateGolfer:(GolferObject *)feedObj
{
NSLog(@"In add or update Feed");
// get reference to local (stored) golfer item, create it if needed
Golfer *localGolfer = [self golferForId:[feedObj PlayerId]];
if (localGolfer == nil) {
localGolfer = (Golfer *)[NSEntityDescription insertNewObjectForEntityForName:@"GolferEntity" inManagedObjectContext:[self managedObjectContext]];
[localGolfer setPlayerId:[feedObj PlayerId]];
}
// set folder fields
[localGolfer setGolferObj:feedObj];
// apply update
NSError *error;
if (![managedObjectContext save:&error]) {
NSLog(@"%@", [error localizedDescription]);
// return nil;
}
NSLog(@"successfully saved user: %@", [feedObj PlayerId]);
//return localFolder;
}
: * - [NSKeyedArchiver의 dealloc] : 경고 : NSKeyedArchiver가 호출 -finishEncoding 한하지 않고 해제. 때문에 캐치되지 않는 예외 'NSInvalidArgumentException'응용 프로그램 종료, 이유는 *는 : -
'[GolferObject encodeWithCoder는 :] 알 수없는 선택기 예를 0x4b7520로 전송'- 아니 내 코드에서 내가 그래서 'NSKeyedArchiver을 alloc'd있는 곳 이것은 핵심 데이터에 의해 수행 된 것이라고 가정합니다. 또한 내 GolferObject에는 encodeWithCoder 메서드가 없습니다. 나는 이것이 어디에서 왔는지 모른다.
[NSKeyedArchiver dealloc] 경고에 백 트레이스가 표시됩니까? - [NSKeyedArchiver dealloc]의 Xcode에 중단 점을 설정하면 호출의 시작 위치를 알 수 있습니다. – bneely
내 코드에서 "NSKeyedArchiver"를 쓰지 않았습니다. 그게 문제 야. 나는이 문제가 어디에서 왔는지에 관해서 조금도 단서가 없다. 변형 가능한 형식 특성에 사용자 지정 개체가 포함될 수 있다는 가정하에 엔터티를 구조화했습니다. – propstm
NSKeyedArchiver가 사용중인 클래스 나 프레임 워크에 의해 관리되고있는 것 같습니다. NSKeyedArchiver 객체에 대한 직접적인 책임은 없지만 코드에는이 도움이되지 않는 방법으로 명시된 오류가있을 수 있습니다. 중단 점을 설정하고 역 추적을 얻으면 디버깅을위한 시작점이 될 수 있습니다. – bneely