나는 무엇이 문제인지 완전히 알지 못합니다.Magical Record - context (저장하지 않음)
특히가, + MR_contextForCurrentThread를 사용하지 않는 : 나는 그래서하지
+ MR_contextForCurrentThread
를 사용해서는 안 docs에 따르면Object *object = [Object MR_createEntity]; object.name = @"blahblah"; NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext]; [context MR_saveToPersistentStoreAndWait];
: 나는 새로운 객체를 생성하고 문맥에 삽입 해요 + [MagicalRecord saveWithBlock : ...] 메소드 중 하나에서 반환 된 컨텍스트가 올바르지 않을 수 있습니다!
그러나 나는 내 응용 프로그램 데이터를 열면 내가 볼 수있는 3 개 개의 파일 (1) appname.sqlite
, (2) appname.sqlite-shm
(3) appname.sqlite-wal
. 내가 아는 한 2 & 3은 캐시입니다. 2 번과 3 번과 함께 파일 1을 열면 모든 데이터를 볼 수 있습니다. 그러나 파일 1 (어딘가에 2 & 3에서 복사)을 열면 데이터베이스에 데이터가 없으므로 무언가가 정상적으로 작동하지 않을 수도 있습니다.
이 문제는 시뮬레이터에없는 장치에서만 볼 수 있으며 .sqlite를 app 데이터에서 컴퓨터로 복사하는 경우에만 표시됩니다. 3 개의 파일 모두를 복사하면 모든 레코드를 볼 수 있지만 모든 것이 sqlite 대신 캐시에 저장되어있는 것이 좋습니다.
아마도 개체가 생성되었지만 영구 저장소에 삽입되지 않았기 때문에 [Object MR_createEntity]
에서 [Object MR_createInContext:context]
으로 바꿔야합니까?
이 경우에도 월별 및 월별 데이터가 표시되지 않습니다. shm 파일을 만들었지 만이 두 파일을 첨부하면 모든 데이터를 볼 수 있습니다. 외부 편집기로 열면이 파일들이 .sqlite와 합쳐져서 wal과 shm 파일없이 .sqlite 만 사용하여 모든 것을 볼 수 있습니다. – Vive
그런 다음 모든 sqlite 파일에 모든 데이터를 저장하는 가장 좋은 방법은 sqlite의 pragma 옵션을 살펴보고 저장소를 설정하기 전에 적절한 옵션을 설정하는 것입니다. SQLite는 일단 상점이 만들어지면 pragma 설정에 대한 업데이트에 응답하지 않은 것 같습니다. 그러나 내가 잘못한 일을했을 수도 있습니다 ... – casademora