2009-09-02 4 views
12

국가 개체 및 국가 코드가있는 개체 개체가 있습니다. 그것은 NSManagedObject의 하위 클래스이며 영구 저장소에 값을 저장하기 위해 핵심 데이터 모델과 함께 사용하고 있습니다.정상 개체로 관리되는 개체 외부의 NSManagedObject 하위 클래스

동일한 국가 개체가 일반 개체로 사용되는 장소가 있습니다. 즉, 임시 국가 이름을 저장하는 데이 개체를 사용합니다.

그 동안 나는 초기화가 성공적으로 수행
[NSManagedObject alloc] init] 

을 다음과 같은 국가를 초기화했지만, 그 객체에 어떤 속성을 설정할 수 없습니다입니다. 그래서 나는 탐험을했습니다. NSManagedObject에 대한 init은 문서에 따라 지원되지 않습니다.

일반 개체뿐만 아니라 CoreData와 함께 NSManagedObject 국가를 사용하는 방법을 모르겠습니다.

NSManagedObject 클래스 문서의 개요

답변

10

번째 단락 :

는 관리되는 개체가 개체에 대한 메타 데이터를 제공하는 기업 설명 ( NSEntityDescription의 인스턴스)와 연관되어

( 의 이름을 포함 개체가 인 개체와 해당 개체의 이름 인 및 은 개체 그래프로 변경되는 을 추적하는 관리되는 개체 컨텍스트입니다. 관리 대상 개체가 데이터와 함께 사용하도록 적절히 구성된 인 것이 중요합니다. 입니다. 관리되는 개체를 직접 인스턴스화하는 경우 지정된 초기화 프로그램 (initWithEntity : insertIntoManagedObjectContext :)을 호출해야합니다. 메소드의 문서에서

:

중요

:이 방법은 NSManagedObject의 지정 초기화입니다. 관리 객체를 init으로 초기화하면 안됩니다.

설명서는 실제로 매우 좋습니다.

실행 가능한 CoreData 스택 외부에서 NSManagedObject를 사용하지 않으려 고합니다. NSManagedObjects는 올바르게 구성된 핵심 데이터 환경 내에서 작동하도록 매우 명확하게 설계되었습니다. 임시 인스턴스가 필요한 경우 메모리 내 저장소를 만들거나 일반 저장소에 저장소를 만들고 먼저 삭제하지 않고 변경 내용을 저장하지 마십시오.

+0

감사합니다. 따라서 우리가 정상적인 객체처럼 초기화하는 것은 불가능합니다. 영구 저장소에 대한 NSInMemoryStoreType을 참조하기 때문에 삽입 된 엔터티가 휘발성 RAM 메모리에 저장됩니다. 다른 질문이 있습니다. 실제로 삭제되거나 수동으로 플러시해야합니까? – raksja

+0

(수동으로) 지우거나 앱을 종료 할 때 지울 때 지워집니다 ... InMemoryStores는 다른 상점과 마찬가지로 작동합니다. 단지 지 속성은 메모리에만 있습니다. – bbum

2

initWithEntity:insertIntoManagedObjectContext:을 사용하고 nil을 전달하십시오.

관련 문제