많은 임시 객체를 생성 한 다음 코어 데이터를 사용하여 하나만 저장하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1619911

  •  06-07-2019
  •  | 
  •  

문제

온라인 서비스에 대한 검색을 수행하고 많은 결과 객체를 생성하는 응용 프로그램을 진행하고 있습니다. 결과 객체는 nsmanagedObject이며 nsmanagedObjectContext와 연결하여 요구하는대로 초기화되었습니다.

사용자는 "결과"를 선택하여 "좋아하는"으로 저장할 수 있어야합니다. 응용 프로그램에서 이것은 결과 엔티티를 새로운 좋아하는 엔티티와 연결하고 컨텍스트를 저장하는 것만 큼 간단합니다.

문제는 물론 맥락에서 모든 결과가 내가 좋아하는 것과 함께 데이터베이스에 저장된다는 것입니다.

여러 NsmanagedObjectContext 인스턴스를 사용하여 다양한 생성 및 지속 상황을 관리하는 많은 예를 보았습니다. 그들 모두는 하나의 컨텍스트로 새로운 인스턴스를 만드는 아이디어를 중심으로 한 다음 다른 Fetchrequest 실행을 피하기 위해 다른 컨텍스트로 저장하는 것을 통합하는 것 같습니다. 이 예제는 여전히 모든 결과 엔티티가 저장되고 있기 때문에 문제를 해결하지 못합니다.

누구든지 제안이 있습니까? 나는 이것에 대해 완전히 탭했다.

도움이 되었습니까?

해결책

각 객체마다 다른 컨텍스트를 사용해야합니다. 별도의 관리 객체 컨텍스트를 사용하면 다음과 같이 작업 할 수 있습니다. 사용자가 좋아하는 객체를 선택하면 나머지 결과 객체와 관련된 컨텍스트를 버립니다. 변경 등을 병합 할 필요가 없습니다. 기본적으로 트레이드 오프가 있습니다. 몇 가지 상황을 관리 (생성/폐기)하게되지만 목표를 쉽게 달성 할 수 있습니다. 그렇지 않으면 단일 컨텍스트 만 사용 하여이 작업을 수행 할 수 있습니다. 그러나 다음 코드 스 니펫과 같이 각 객체를 명시 적으로 삽입하거나 삭제해야합니다.

이 시도. 저장하려는 좋아하는 객체에 대해서만 다음을 수행하십시오.

[managedObjectContext insertObject:theFavorite];

다른 결과 객체 각각에 대해 대신 다음을 수행합니다.

[managedObjectContext deleteObject:aResult];

그런 다음 평소와 같이 저장하십시오

NSError *error = nil
if (![managedObjectContext save:&error]) {
   // Handle error

}

선택한 선호하는 객체 만 저장합니다.

다른 팁

나는 NIL 컨텍스트를 사용하고 기본 도메인 모델 클래스를 사용하여 지속적으로 객체를 지속적으로 추가하여 유효한 컨텍스트에 객체를 추가 할 수 있습니다. 정말 잘 작동합니다 (그리고 깨끗하게!) ... 여기에서 사용 가능한 코드 ... 임시 핵심 데이터

nsmanagedObject 서브 클래스가 아닌 결과 객체를 만듭니다. 사용자가 하나를 선택하면 단일 관리 인스턴스를 만들어 저장하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top