2012-04-05 4 views
0

미리로드 된 sqlite 데이터베이스와 함께 핵심 데이터를 사용하고 있습니다. 이상한 문제가 발생했습니다. 앱이 시뮬레이터에서 작동하지만, 기기에서 실행 해 봅니다. 예 : iPad, 아래 오류가 발생합니다.iOS 영구 저장소 문제

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObject persistentStore]: unrecognized selector sent to instance 0x3bebf50' 

모델에서 sqlite 데이터베이스를 다시 만들고 데이터베이스를 다시 채웠지 만 여전히 동일한 오류가 발생합니다. 빌드 단계 섹션에서 'Compiled Sources'및 'Bundle Resources 복사'를 선택했는데 파일이 모두 있습니다.

코드 : http://pastebin.com/fTTgEA3W

내 머리를 건 드리는되어 ​​그것이 작동하지 않는 이유는, 어떤 도움이 정말 감사 할 것입니다 이해할 수없는 것.

시간 내 주셔서 감사 드리며 더 많은 정보가 필요하면 알려 주시기 바랍니다.

답변

0

첫 번째 조치 : 앱을 삭제하고 다시 설치하십시오.

두 번째 조치 : 코드에서 persistentStore에 대한 호출을위한 텍스트 검색. 이 방법이없는 주소 인 NSManagedObjectContext으로 이동하는 것 같습니다. 오류를 발견하면 수정하십시오.

세 번째 조치 : 레크리에이션 알고리즘을 검토하여 상점을 올바르게 구축하는지 확인하십시오. 대형 매장이있는 프로젝트에서 메모리가 필요하기 때문에 일반적으로 시뮬레이터에서만 작동하는 원시 데이터에서 저장소를 가져와야하는 경우 스위치를 켜는 SETUP 플래그가 있습니다. (SETUP이 꺼져 있고 상점이 없으면 이전에 생성 된 카드가 복사됩니다.) iPad에서는 데이터 가져 오기를 수행 할 메모리가 부족할 수 있습니다.

+0

도움 주셔서 감사합니다. 나는 너의 계단을 시험해보고있다. "iPad에서 데이터 가져 오기를 수행 할 메모리가 부족한 것 같습니다." 데이터베이스의 행 수를 줄이거 나 메소드 setFetchOffset, setFetchLimit, setFetchBatchSize에 다른 값을 사용해야한다는 것을 의미합니까? – JingJingTao

+0

아니요, 큰 SQLite 데이터베이스를 준비하기 위해 시뮬레이터에서 원시 데이터 가져 오기를 수행한다는 의미입니다. 그런 다음 앱을 처음 실행할 때 iPad (프로그램의 문서 디렉토리)로 복사 할 수 있습니다. – Mundi

+0

안녕 Mundi, 늦은 답장을 드려 죄송합니다. 나는 문제가 테이블 뷰가 많은 레코드를로드하려고 시도하고 있다는 것을 생각한다. setFetchLimit을 사용하면 100과 같다고 말하면서 메모리 문제가 생긴다. 또한 나는 아직도 당신이 무엇을 제안하는지 이해하지 못한다. 나는 현재 미리로드 된 데이터베이스를 프로젝트에 추가하고 프로그램의 문서 디렉토리 (내 애플 리케이션 델리게이트의 영구 스토어 메소드의 로직)에 복사한다. 우리는 아직 같은 페이지에 있다는 것을 모른다. 도움을 주셔서 감사합니다. 필요한 경우 더 많은 것을 설명해주십시오. iOS 개발에 익숙하지 않아 뭔가가 누락되었습니다. – JingJingTao