2014-11-25 4 views
1

각 테스트 전에 데이터를 지우고 조명기를 다시 만들려고합니다. 응용 프로그램은 모든 시간이 왜 이런 일이 cannot find data for a temporary oidMagicalRecord 여러 truncates, "임시 oid에 대한 데이터를 찾을 수 없습니다"

[A MR_truncateAll]; 
[B MR_truncateAll]; 
[C MR_truncateAll]; 
[[FixtureLoader instance] loadDataInContext:[NSManagedObjectContext MR_defaultContext]]; 
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait]; 

으로 그러나 MR_saveToPersistentStoreAndWait 안타 충돌?

답변

2

테스트에서 truncate하지 말고 그냥 메모리 저장소를 사용하고 모든 테스트 후에 저장소를 덤프하십시오. 당신은 충돌을 경험하지 않을 것이며, 그것은 훨씬 더 빠를 것입니다.

- (void)setUp { 
    [super setUp]; 

    [MagicalRecord cleanUp]; 
    [MagicalRecord setupCoreDataStackWithInMemoryStore]; 
} 
+0

나는 확실히할만한 좋은 생각이지만 충돌의 원인은 무엇입니까? 그것이 근본적으로 잘못된 것이 있습니까? –

+0

픽스처 로더가 백그라운드 대기열/스레드에서 작업을 수행하는 경우 문제가 발생할 수 있습니다. 기본 컨텍스트는 일반적으로 주 스레드 액세스 전용입니다. – casademora

+0

알아낼 수는 없지만 메모리로 전환하면 모든 것이 수정됩니다. –