2012-09-10 3 views
0

심각한 문제의 원인을 파악하기 위해 내 소스 코드에서 되돌릴 방법을 시도했습니다. 핵심 데이터 개체 삭제가 응용 프로그램에 충돌이 발생했습니다.

나는 다음과 같은 제안에 코어 데이터에서 NSManagedObjects 내 응용 프로그램 충돌을 삭제

:

CoreData`_nameForEntityDescription: 

나는 오류에게 NSManagedObject들 중 하나를 참조 참고 있지만 다른 NSManagedObject들뿐만 아니라합니다.

내 핵심 데이터 요구를 처리하기 위해 MagicalRecord를 사용하고 있지만이 문제가 아닌 것으로 의심됩니다. 이 시점에서 나는 그 문제가 무엇이 될 수 있는지에 대해 매우 혼란 스러웠다.

문제점에 대한 어떤 힌트를 제공 할 수있는 핵심 데이터 전문가가 있습니까? 나는 (그것이 관계의를 통해) 개체에 대한 NSManagedObjects 세트를 잡아하려고 할 때 나는 또한 _nameForEntityDescription와 동일한 문제를보고 있어요

: 뭔가 NSManagedObject에 손상 같은

NSSet* delSet = [NSSet setWithSet:contact.contactEmails]; 

그래서 것 같다 모델,하지만 내가 가지고있는 모든 것을 살펴 봤는데 나는 그것이 무엇인지 알 수 없다. (

+0

구체적인 내용을 기꺼이 제공하지 않는 한, 당신이 얻으려고하는 것은 모두 추측입니다. 특정 문제가 있습니다. 귀하의 질문은 마찬가지로 구체적인 세부 사항을 제공해야합니다. –

+0

그래, 알아. 나는 어둠 속에서 하루 동안 촬영했다. 도움이된다면 자세한 내용으로 답변을 업데이트했습니다. – runmad

답변

1

과거의 개체를 삭제할 때 충돌이 발생했다. 여기에 충분한 정보가 없으므로 확인해야 할 몇 가지 일반적인 사항을 알려 드리겠습니다.

1) 개체를 삭제할 때 개체에 대한 참조가 없는지 확인하십시오. 개체를 삭제 한 후에 컨텍스트를 저장하면 저장소의 백업 참조가 제거됩니다. 즉, 개체에는 데이터베이스에 실제 레코드가 없습니다. 다음 번에 해당 개체를 사용하면 Core Data에서 소리를 지르겠습니다.

2) 문제 1은 백그라운드 저장을 스레드했을 때 많이 발생합니다. 사용할 수있는 솔루션은 올바른 데이터와 유효한 개체가 보장되도록 저장 한 후에 모든 데이터 개체 참조를 다시 가져 오는 것입니다. MagicalRecord는 이것을 도와주는 완성 블록 메커니즘을 제공합니다.

ManagedObjectModel을 문제로 의심하는 사용자는 이전 빌드 아티팩트를 제거하기 위해 깨끗한 빌드를 수행하고 시뮬레이터/장치에서 앱을 제거해야했습니다.

+0

문제는 코어 데이터에서 추상 엔티티를 사용하는 것과 관련이 있습니다. 이제는 멀리 떨어져 있습니다! 하지만 저축에 대한 조정을 했으므로 스레드가 줄어들었고 이제는 모두 좋았습니다. 감사! – runmad