2012-03-20 3 views
1

객체 : GameLevel 및 TransitionLevel. 이 클래스의 각각은 NSCoding 프로토콜을 구현합니다. 그러면 Level 배열이 생겼습니다 (GameLevel 클래스와 TransitionLevel 클래스가 모두 포함되어 있습니다). 보관 파일을 저장하면 정상적으로 작동하는 것 같습니다.직렬화 배열은 내 코드로 잘못 무슨 일이 일어나고 있는지 찾을 수없는, 내가 여기하지만 그것에 대해 많은 자원이 아직 알고 아이폰 OS

NSString *archivePath = [DOCUMENT_DIRECTORY stringByAppendingPathComponent:@"levels.archive"]; 
[NSKeyedArchiver archiveRootObject:levels toFile:archivePath]; 

레벨은 내가 저장하려는 배열입니다. 파일을 볼 수 있습니다. 파일이 만들어지고 포함될 내용이 포함 된 것 같습니다. 하지만이 배열 검색 할 때 :이 예외를 가지고

NSString *archivePath = [DOCUMENT_DIRECTORY stringByAppendingPathComponent:@"levels.archive"]; 
levels = [NSKeyedUnarchiver unarchiveObjectWithFile:archivePath]; 

:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil' 

를 내가 여기에 누락 모르겠어요.

+0

게시 할 때 내 인사말이 항상 삭제되는 이유를 모르겠습니다. 안녕하세요 :) – rmonjo

+0

질문에 "안녕하세요", "감사", "안부"등의 불필요한 정보를 추가 할 필요가 없습니다. SO 소프트웨어는 자동으로 그 중 일부를 제거합니다; 다른 시간에 사람들이 질문을 편집하여 제거합니다. 처음부터 그것을 버려서 모든 사람을 저장하십시오 - 그것은 무례한 것이 아니며 시간의 테스트를 더 잘 지키는 질문을 할 것입니다. 개인적인 접촉을 추가하려면 대신 [프로필] (http://stackoverflow.com/users/251552/user251552)을 작성하십시오. – Caleb

답변

1

구현 중 initWithCoder:nil이면 코드 일부가 배열에 nil 값을 삽입하려고 시도합니다.

중단 점 탐색기 (⌘6)로 이동하여 예외 중단 점을 추가 할 수 있습니다. 그런 다음 응용 프로그램에서 예외가 발생하면 Debug Navigator에 현재 실행 된 함수와 메서드의 스택이 표시됩니다. 이렇게하면 배열에 nil을 삽입하려는 메서드를 정확하게 알 수 있습니다.

+0

이전에이 뷰를 사용 해본 적이 없으니 대단히 감사합니다. 실수를 직접 발견했습니다 (바보 같았습니다). – rmonjo