2014-12-16 4 views
0

내가 나를 엔티티로 JSON을 구문 분석 할 수 있도록 내 기관에 카테고리를 가지고 :MOC의 실체를 작성하지만, 삽입하지 마십시오

- (id) populateFromJson: (NSDictionary *) json { 
    ... 
} 

그래서 나는이 할 수있는 MagicalRecord를 사용하여 :

MyEntity *e = [My MR_createInContext:localContext]; 
[e populateFromJson:json]; 

그러나 엔티티에 구문 분석을 한 후에는 주 컨텍스트에 이미 존재하는지 확인해야합니다 (예 : 중복 확인). 이미 주 컨텍스트에있는 경우 컨텍스트에 삽입하고 싶지 않지만 MagicalRecord를 사용하여 컨텍스트의 일부로 엔티티를 만드는 방법을 찾을 수는 없지만 해당 컨텍스트에 삽입하지 마십시오.

즉, 핵심 데이터에이 작업을 수행 할 수 있습니다 : 당신에 삽입 할 수있는 상황에 nil을 통과

MyEntity *e = [[MyEntity alloc] initWithEntity:[NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:[NSManagedObjectContext MR_defaultContext]] insertIntoManagedObjectContext:nil]; 

. 그런 다음

나중에없는 경우 중복 수행 할 수 있습니다

[localContext insertObject:e]; 

내가 뭔가를 누락되거나 MagicalRecord에서이 작업을 수행 할 수있는 방법이없는 건가요?

+0

MyEntity * e = [[MyEntity alloc] initWithEntity ...'는 컨텍스트에 개체를 삽입하지 않고 개체를 만듭니다. 이 객체는 이전 텍스트에서 암시하는 "컨텍스트의 일부"가 아닙니다. MagicalRecord를 사용할 때도 모든 Core Data 메서드를 호출 할 수 있지만, MyEntity * e = [My MR_createInContext : nil] '과 동일한 결과를 얻을 것이라고 가정합니다. –

+0

MyEntity * e = [내 MR_createInContext : nil] 예외가 발생합니다. 이것은 MR이 nil을 엔티티의 컨텍스트로 사용하고 삽입 할 컨텍스트로 사용하려고하기 때문입니다. 내 코드는 삽입 할 컨텍스트로 nil 만 사용합니다. – lostintranslation

답변

1

복제본이있는 경우 오브젝트를 전혀 작성하지 않는 것이 더 간단 할 것입니다. 예를 들어 JSON에 기본 키가있는 경우 해당 기본 키가있는 객체를 가져올 수 있습니다 (물론 기본 키 속성은 생성하기 전에 만들어야합니다).

+0

나는 네가 옳다고 생각한다. 불행히도 컨텍스트에 첨부되지 않은 평범한 오래된 객체를 만드는 방법은 없습니다. 어떤 경우에 실제로하고 싶은 일입니다. json을 객체로 정렬하여 객체의 속성에 액세스 할 수 있도록합니다. 제 경우에는 수동으로 몇 가지 속성을 가져 와서 dup을 확인한 다음 엔티티를 만들고 엔티티에 json을 마샬링해야합니다. 코어 데이터 API가 작동하는 방식에 따라 약간의 작업이 중복되지만 아마 '가장 좋은'방법 일 것입니다. – lostintranslation

+0

컨텍스트없이 개체를 만들 수 있고 개체가 아직 존재하지 않는다고 확신되면 나중에 컨텍스트에서'insertObject :'를 호출 할 수 있습니다. http://stackoverflow.com/a/3868651/131779 나는 이것을 시도한 적이 없기 때문에 그것을 보증 할 수는 없지만 한 번 할 가치가있다. –