2009-11-16 1 views
2

내 아이폰 응용 코어 데이터 모델을 사용하여 임. 나는 ManagedObjectContext 외부에서 Entity를 인스턴스화하거나 사용하는 방법을 찾고 있었다. (이 일은해서는 안되며, 나도 알아, Im은 그렇게하지 않는 방법을 찾고 있지만 어쨌든 혜택을 얻는다.)임시 사용 NSObject 및 NSManagedObject 전환하는 방법

내 도전 과제는 사용자가 "사람"을 검색 할 수있는보기가 있고 모든 검색 결과가 구문 분석되어 Person managedObject에 입력되어 목록에 표시된다는 것입니다. 사용자가 목록에서 Person을 클릭하면 Person 엔티티가 저장소에 저장되기를 원합니다. 그러나 다른 모든 결과를 삭제해야 원하는 엔티티와 함께 ​​유지되지 않습니다. . 또한 내가 아는 한, 사용자가 앱을 결정하면 스토어는 지속되며, 잠재적으로 모든 현재 검색 결과가 실제 사용자 데이터와 혼합됩니다!

내가 검색 목록에 사용할 수있는 TempPerson NSObject를 가질 수있는 방법이 있습니까? 그러나 temp 객체에서 45 개의 속성을 수동으로 가져 와서 managedObject에 수동으로 설정해야합니다! 등을

정렬 : NSManagedObject aPersonCorrectlyReturnedFromTheStore = (NSManagedObject *) tempPersonOfJustTypeNSObject가/취소를 촉진 아직 지속되지 않는 개체를 다시 및 기타 물건에 임시 저장소를 구축 내가 애플에서 예제 코드 본

. 이것은 내 상황에서 과도 할 것이라고 생각합니다. 사용자가 계속 유지할 사람을 선택할 때까지 검색 결과를 표시하면됩니다.

은 임 내 핵심 데이터 어휘가 아직 충분히 아주 크지처럼 :) 어떤 제안에 대한

감사 느낌을하려고 분명한 바랍니다.

+0

직접 코어 데이터를 사용하지는 않았지만 검색 결과에 대해 별도의 관리되는 개체 컨텍스트를 유지할 수 없으며 원하는 결과 하나만 전송/유지할 수 있습니까? – jtbandes

답변

4

각 임시 사람 개체를 NSDictionary 또는 NSMutableDictionary로 만들 수 있습니다. 그런 다음 새 Person 관리 객체를 만들고 NSManagedObject 인스턴스가 KVC 호환이며 setValuesForKeysWithDictionary :를 사용한다는 사실을 사용할 수 있습니다.

3

삽입 된 새 관리 개체는 관리 대상 개체 컨텍스트 인 save: 메시지를 보낼 때까지 실제로 유지되지 않습니다.
컬렉션 (세트 또는 배열)에서 해당 항목을 추적하십시오. 검색 결과를 어떻게 든 표시하고 있기 때문에 이미이 작업을 수행하고있을 것입니다. 그런 다음 사용자가 선택한 항목을 제외한 모든 항목을 삭제하십시오 (deleteObject:).
삭제 된 관리 개체는 절대로 저장되지 않습니다.

+0

제안 해 주셔서 감사합니다. setValuesForKeysWithDictionary에 대해 읽어보고 시간을 가져 와서 구현했습니다. 그래서 이번에는이 시간이 있습니다. 두 답이 모두 좋기 때문에 나는 두 답을 줄 수 있기를 바랍니다. 다시 감사합니다 :) – RickiG

+0

나는 또한 Benno의 대답을 선호합니다. – gerry3