2012-03-06 5 views
0

내 응용 프로그램에서 CoreData을 사용하고 있으며 "카드"엔티티 집합이 있습니다. 플레이어는 자신의 덱에 같은 카드를 두 개 이상 가질 수 있습니다 (데이터베이스에서 가져온 카드와 동일한 카드이지만 배열에 두 번 더 추가됩니다).중복 NSManagedObject

중복 카드 중 하나의면을 수정하려고 할 때 내 문제가 발생합니다. 그것들은 (데이타베이스에 저장되지 않는) 커스텀 프로퍼티를 가지고있는 서브 클래스 NSManagedObjects입니다. 예를 들어 배열의 한 카드에 사용자 정의 속성 중 하나를 설정하면 entityForName:inManagedObjectContext:이 동일한 객체를 반환하고 새 객체를로드하지 않기 때문에 어레이의 다른 동일한 카드에서도 변경됩니다.

기본적으로 내가 필요한 것은 entityForName:inManagedObjectContext:이 호출 될 때마다 동일한 엔터티의 새 인스턴스를 가져 와서 하나의 사용자 지정 속성을 수정할 때 다른 인스턴스에서도 수정되지 않도록합니다. 엔터티가 이미 생성되었지만 작동하지 않는 경우 이미 [엔터티 복사본]을 사용하여 시도했습니다.

도움을 주셔서 감사합니다.

답변

0

핵심 데이터는 데이터베이스가 아닌 영구 저장소입니다. 그래서 몇 번이나 물어 보더라도 아무리 똑같은 물건을 꺼내야하는 이유가 있습니다. 데이터베이스의 스냅 샷은 아니지만 일부 사용자 정의 SQL 코드를 작성한 경우 해당 스냅 샷은 실제 실제 오브젝트입니다.

그 점을 염두에두고해야 할 일은 논리적 스키마와 일치하도록 핵심 데이터 스키마를 구성하는 것입니다. 예를 들어 CardInstance와 Card와의 일대 다 관계가 있고, 데크에서 카드를 꺼낼 때 CardInstances를 만들거나 페치 된 카드에서 스냅 샷 객체로 읽을 코드를 작성합니다. 마치 SQL로 수동으로 작업하는 것처럼 말입니다.