2010-06-27 4 views
2

nsfetchedresultscontroller를 사용하여 coredata의 데이터와 함께 tableview를 사용하고 있습니다. 보기가로드되면tableview coredata 임시 개체

SomeManagedObject *someManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"SomeManagedObject" inManagedObjectContext:self.managedObjectContext]; 

을 사용하여 새 항목을 만듭니다. 이렇게하면 새 항목이 내 tableview에 나타납니다. 이제이 엔티티가 일시적 이길 원하지만, tableview 내부의 일부 객체를 편집하고 managedObjectContext를 저장하면 임시 엔티티도 저장되고 그걸 원하지 않습니다.

그들의 방법은 하나의 객체 만 저장하는 것이지 managedObjectContext 내부의 모든 것을 저장하는 것이 아닙니다.

다른 방법으로 내 tableview에 대한 임시 개체를 만들 수 있습니까?

도움이 될 것입니다. 감사합니다 톤

+0

initWithEntity : insertIntoManagedObjectContext에 nil 컨텍스트를 전달할 수 있습니다. 이 질문을보십시오 : http://stackoverflow.com/questions/3256195/how-to-deal-with-temporary-nsmanagedobject-instances – Symmetric

답변

0

아니요, managedObjectContext 저장시 모두 또는 아무 것도 아닙니다. 내가 모르는 당신이 다음이 객체가 저장되지해야 managedObjectContext를 저장하는 경우는 전무

- (void)assignObject:(id)object toPersistentStore:(NSPersistentStore *)store 

에 관리 객체의 영구 저장소를 설정 한 경우 발생하는 것입니다. 단지 추측이지만 작동하는지 말해주십시오.

+0

Nope. 이 작동하지 않습니다. 나는 그것을 사용하여 기본 저장소에 개체를 할당합니다 것 같아요. – Ton

0

임시 관리 대상 개체의 경우 두 번째 관리 대상 개체 컨텍스트 (MOC)로 만듭니다. 작업이 끝나면 저장을 수행하지 않고 MOC를 놓습니다.

CoreDataBooks의 북 코드 추가에서 사용자가 취소 할 때 새로 추가 된 객체를 버리는 데 동일한 접근 방식을 사용합니다.

+0

별도의 컨텍스트를 만들지 마십시오. 그것은 매우 낭비적이고 비쌉니다. 객체가 임시적이어야하는 경우, -init를 사용하여 객체를 생성하고 컨텍스트를 전혀 전달하지 마십시오. –

+0

마커스 (Marcus)와 동의하십시오, 이것은 제가하는 일입니다. 그리고 기본 컨텍스트에 재귀 적 삽입을 처리하기 위해 기본 클래스를 사용합니다 ... http://www.locassa.com/index.php/2011/05/temporary- storage-in-apples-coredata/ –

+0

@ MarcusS.Zarra, 임시 (잠재적으로 버려진) 객체에 대해 별도의 컨텍스트를 만드는 것을 권장하지 않습니까? 2014 년에도 유효합니까? 미리 감사드립니다. –

2

새로운 NSManagedObject를 만들고 초기화하고 NSManagedObjectContext 대신 nil을 전달합니다. 그런 다음 나중에 해당 개체를 영구적으로 유지하기로 결정한 다음 컨텍스트를 설정하십시오. 그러나 NSFetchedResultsController에서 컨텍스트와 연결되지 않기 때문에이 옵션을 볼 수 없습니다.

귀하의 궁극적 인 목표를 설명 할 수 있다면 더 나은 답변을 제공 할 수 있습니다.

+0

@dynamic 속성에서 실패합니다. initWithEntity : insertIntoManagedObjectContext에 대한 문서는 "Important이 메서드는 NSManagedObject의 지정된 이니셜 라이저입니다. 관리되는 개체를 init에게 보내서 초기화하면 안됩니다." – Symmetric

+0

귀하의 의견을 이해하지 않습니다. NSManagedObjectContext에 대해 nil로 전달할 특정 상태에 대한 답. 벌거 벗은'-init'이 호출된다는 암시는 전혀 없었다. –

+0

알겠습니다. 죄송합니다. 위의 "alloc init"은 initWithEntity가 아닌 맨 처음의 init로 읽습니다.어쨌든이 다른 질문에 대한 답은 더 명확합니다. http://stackoverflow.com/questions/3256195/how-to-deal-with-temporary-nsmanagedobject-instances – Symmetric