2012-02-05 6 views
0

CoreLocation 및 Reverse Geocoding을 사용하는 사용자 정의 LocationGenerator 클래스를 생성하고 (요청시) 사용자 정의 Location 객체를 생성합니다. 내 사용자 지정 위치 개체에는 주소와 GPS라는 두 개의 인스턴스 변수가 있습니다. 두 개의 사용자 지정 클래스의 인스턴스를 모두 가리 킵니다. - 주소는 문자열의 무리이며 GPS는 위도, 경도 및 고도의 세 가지 부동 소수점입니다. 위치, 주소 및 GPS, 모든 각각의 초기화 방법에 설정된 기본 값 -객체 인스턴스를 코어 데이터로 가져 오려면 어떻게해야합니까?

위치 = 주소 + GPS이를 위해

작업, 나는 세 개의 사용자 정의 클래스를 만들 필요가 있었다.

그런 다음 코어 데이터로 이동했습니다. 모델에는 항목, 위치, 주소 및 GPS와 같은 항목이 있습니다. 항목 엔티티에는 몇 가지 간단한 문자열 속성과 위치 관계가 있습니다. 위치 엔티티에는 주소 및 GPS 상대성이 있습니다.

코어 데이터로 이동 한 후 위의 위치 주소 및 GPS 사용자 지정 클래스를 삭제하고 Xcode에서 핵심 데이터 모델을 기반으로 클래스를 생성하도록했습니다.

문제는 더 이상 LocationGenerator에서 Location 인스턴스를 만드는 방법을 모르겠다는 것입니다. Location과 Address와 GPS에 대한 이전 클래스 정의는 사라졌고 코어 데이터의 클래스 정의에서는 init 메소드를 재정의해서는 안됩니다. 그러나 생성 된 클래스가 새 Location 객체의 청사진일까요?

내 질문에, 어떻게 LocationGenerator에서 위치 개체를 생성해야 할 것 같아요. LocationGenerator의 Location 객체가 관리 대상 객체 컨텍스트 내부에 만들어야합니까? UI 관점에서 명확히 설명하기 위해 - 나는 아이템을 만드는 과정에 있습니다.하지만 아직 생성되지 않았습니다. 위치를 기다리고 핵심 데이터에 삽입됩니다. 컨텍스트에서 생성되고 (그리고 CD 규칙에 의해 관리되는) 유일한 차이점과 함께 이전에 객체를 살펴본 것과 동일한 방식으로 컨텍스트에서 생성 된 모든 객체에서 계속 유지됩니까?

답변

2

관리 대상 객체 (Core Data 객체)의 지정된 초기화 프로그램은 -initWithEntity:insertIntoManagedObjectContext:이며 managedObjectContext와 연결되지 않은 관리 대상 객체는 만들 수 없습니다. 개체를 만들고 나중에 개체를 저장할 것인지 결정하십시오. 이를 수행하는 본질적으로 두 가지 방법이 있습니다. 첫 번째 방법은 NSManagedObject가 아닌 NSManagedObject 하위 클래스를 나중에 유지해야한다고 결정할 때 사용할 수있는 다른 개체 유형을 갖는 것입니다. 다른 방법은 컨텍스트에서 관리 대상 개체를 만든 다음 필요없는 컨텍스트에서 관리 대상 개체를 삭제하는 것입니다.

NSManagedObjectContexts는 "스크래치 패드"로 생각할 수 있습니다. 컨텍스트를 저장하려고하는 동일한 워크 플로에서 개체를 유지할지 여부를 결정할 수있게하려면 두 번째 방법은 다음과 같습니다. -save: 컨텍스트를 저장할 때까지 아무 것도 실제로 유지되지 않습니다. 아마가는 길. 이 미리 보존 된 데이터의 수명이 ManagedObjectContext를 사용하는 표준 워크 플로우보다 길면 첫 번째 방법이 더 좋을 수 있습니다.

HTH.

관련 문제