2011-08-30 4 views
2

저는 웹 API에서 많은 목록을 수신하는 앱을 만들고 있습니다. 사용자가 오프라인으로보기 위해 일부를 저장할 수 있습니다. 내 일반적인 접근 방식은 다음과 같습니다특정 NSManagedObjectContext에서 NSManagedObject의 인스턴스를 만들 수 있습니까?

  1. 는 사용자가 그렇게하도록 선택하면 DB에 개체를 저장하십시오 API에서 데이터를 취득하고, 각 자료
  2. 에 대한 새로운 목록 개체를 확인합니다.

그러나 이것은 핵심 데이터 앱이므로 컨텍스트는 개체가 아닌 저장됩니다.

  1. 는 사용자가해야 할 선택하는 경우 관리 컨텍스트에 객체를 이동 API에서 데이터를 취득하고, 각 자료
  2. 에 대한 관리되지 않는 목록 개체를 만들 : 그 상황에서, 위에서 언급 한 이런 일이 될 것입니다 그래서 컨텍스트를 저장하십시오.

Listing 객체의 관리되지 않는 버전과 관리되는 버전을 사용하는 한 가지 방법은 두 가지 클래스를 갖는 것입니다. ManagedListing 및 UnmanagedListing -하지만 그렇게하는 것은 몹시 반복적 인 방법입니다.

내가 원하는 것은 NSManagedObject의 하위 클래스를 나열하는 것입니다. NSManagedObjectContext 없이도 무리를 초기화하십시오. 그런 다음 하나를 저장하려면 컨텍스트를 설정하거나 해당 특성을 컨텍스트 내에서 새로운 목록으로 복사합니다.

특정 NSManagedObjectContext에서 NSManagedObject의 인스턴스를 만들 수 있습니까? 그렇다면 어떻게?

+0

컨텍스트에서 모든 것을 작성한 다음 필요없는 경우 삭제하십시오. 또는 모든 객체를 개별 객체로 만든 다음 각 객체의 정보를 ManagedObject obj로 전송하여 객체를 저장할 수 있습니다. –

+0

생성 및 삭제가 일시적인 객체의 패턴 인 경우 삭제를 취소 할 수있는 방법이 있습니까? 두 클래스 솔루션이 그들 사이의 관계를 유지하는 작업을 추가하는 것처럼 나는 싫어합니다. – Simon

+1

당신은 객체가 관리 객체 컨텍스트에 "삽입"되는지 아닌지간에 변경할 수있는'[context deleteObject :]'와'[context insertObject :]'를 가지고 있습니다. 현재 레이아웃을 저장하고 싶을 때'[context save :]' –

답변

7

하나는 메모리에, 다른 하나는 디스크에 두 개의 영구 저장소를 사용하십시오. 사용자가 저장하려면 assignObject:toPersistentStore:을 사용하여 다른 저장소로 개체를 이동하십시오.

+0

최고의 솔루션! – Nekto

0

iOS < 5.0 - . iOS> = 5.0 - 아니요입니다.

+0

자세히 설명해 주시겠습니까? – Simon

+0

그냥 + init NSManagedObject를 할당하면 : 버전이 낮은 iOS에서는 5.0 컴파일러가 경고를 보냅니다. 5.0 이상 버전의 iOS에서는 컴파일러에서 오류가 발생합니다. – Nekto

관련 문제