2011-09-01 5 views
2

다른 NSManagedObject 집합의 속성 집합 중 하나 인 NSManagedObject가있는 경우 해당 집합을 nil로 설정하거나 다른 집합으로 바꾸면 원래 집합의 관리 대상 개체는 어떻게됩니까? ? 데이터베이스에서 고아가됩니까? 부모 관리 객체를 삭제하면 계단식 삭제가 가능하지만 같은 일은 아닙니다.NSManagedObjects 관리

설정이든 아니든 상관 없습니다. 하나의 관리 객체가 다른 객체를 참조하고 현재 다른 객체를 참조하고 더 이상 기존 객체를 신경 쓰지 않으려면 객체를 삭제해야합니다.

NSSet *set = [managedObject getDefaultSet]; //at this point I can access the set 
[managedObject setDefaultSet:newSet]; //at this point I can't access it anymore! 

CoreData 내가 새로운 세트와 세트를 교체 한 후 일부 마법을 한 것 같다, 나는 더 이상 GDB를 사용하여 이전 설정에 액세스 할 수 있습니다

나는 내 자신의 일부 테스트를했다. 그러나 그것이 더 이상 데이터베이스에 없다는 것을 의미합니까? 액세스 할 수 없지만 물리적으로 DB에서 제거해야합니까?

편집 : 새로운 시험 : 나는 개체가 그래서 지금 내가 그것을 삭제해야 할 것 같아요 여전히 존재임을 확인한

NSSet *set = [managedObject getDefaultSet]; //at this point I can access the set 
id object = [set anyObject]; 
[managedObject setDefaultSet:newSet]; //at this point I can't access it anymore! BUT I can still access the object 

. 내 생각 엔 setDefaultSet 속성을 재정의하는 것입니다. 코어 데이터의 기본 뮤 테이터 속성은 어떻게됩니까? 필자는 setValue : forKey를 오버라이드하고 싶지 않습니다. 클래스 참조가 명시 적으로하지 않기 때문에 특히 그렇습니다.

+0

당신이 –

+0

내가 어떤이없는 당신의 get/set 메소드 내부의 코드를 게시 할 수 있습니다

- (void)setDefaultSet:(NSSet *)set { NSMutableSet *oldSet = [self mutableSetValueForKey:@"defaultSet"]; for (NSManagedObject *object in oldSet) //remove object from context [oldSet removeAllObjects]; [oldSet addObjectsFromArray:[set allObjects]]; } 

난 내 자신의 접근/뮤 테이터를 추가 : 여기 – JPC

답변

1

내가 지금 함께 갈거야 솔루션의 . 나는 @property 선언을 가지고있다.
+0

올바른 모양입니다. – Delete