2013-09-07 1 views
5

그래서 MagicalRecord를 사용하여 iPad 앱을 개발했으며 최근 자동 마이그레이션 저장소로 이동 한 후 몇 가지 문제가 발생했습니다. 하나의 장치에서 내 .db 파일을 다른 장치로 동기화해야하므로 모든 데이터가 .db에 있어야하지만 WAL 저널링 모드가 활성화 된 것처럼 보입니다 (Magical Record 자동 마이그레이션 저장소의 기본값). 내가 저장하는 방법은 .db-wal 또는 .db-shm 파일 중 하나만 변경 사항을 지속합니다. 나는 정상적인 sqlite 저장소로 전환하고 모든 것이 잘 동작했다. 그래서, 제 질문은 WAL 저널링이 활성화되어 코어 데이터를 메인 데이터베이스에 저장하기 위해 특별한 작업을 수행해야합니까, 아니면 그냥 비활성화해야합니까?핵심 데이터 WAL 모드가 .db 만 변경되지 않고 .db-wal 및 .db-shm 만

답변

4

저널 모드를 변경하십시오. 결국 Magical Record source이 있습니다. SQLite 저널 모드를 DELETE으로 변경하면 매 트랜잭션마다 저널 모드가 삭제됩니다. 저널링을 사용 중지하는 것은 매우 나쁜 생각입니다. 그러지 마세요. 하지만 다른 모드를 사용하는 것이 좋습니다.

코어 데이터는 영구 저장소가 열리면 저널을 조작하기위한 API를 제공하지 않습니다. SQLite는 구현 세부 사항이며 Core Data는 내부 SQLite 세부 정보를 노출하지 않습니다. 코어 데이터 스택을 설정할 때 가장 가까운 것은 options 매개 변수입니다. 여기에서 저널 모드를 변경할 수 있습니다 (MR이 MR을 변경하는 경우).

+0

좋아, 내가 이것을 할 것 같아. CocoaPod를 사용하여 변경 사항을 MagicalRecord에 저장하는 가장 좋은 방법을 찾아야합니다. 감사! – Wizecoder

0

-wal 파일은 데이터베이스의 일부입니다. 파일을 .db 파일과 함께 동기화해야합니다.

또는 checkpoint을 실행하여 주 데이터베이스 파일에 데이터를 복사 할 수 있습니다.

+6

핵심 데이터를 사용할 때 직접 SQLite 핸들에 액세스 할 수 없으므로 수동으로 검사 점을 수행 할 방법이 없습니다 (또는 실제로'sqlite3_ *'호출을 사용하는 방법은 없습니다). –

관련 문제