2012-04-15 5 views
5

내 응용 프로그램에서 짧은 설치 프로세스가 있고 NSManagedObject를 만들어 이름 및 개인 세부 정보를 저장하지만이 설치 중에 사용자가 끝나면 '완료'를 누를 때까지 개체를 저장하고 싶지 않습니다. (어떤 이유로 든 설정을 취소하는 경우).저장하지만 NSManagedObject를 CoreData에 저장하지 마십시오?

실제로 CoreData에 저장하지 않고 설정 프로세스가 끝날 때까지 잠깐 동안 내 정보를 보유하고있는 객체를 유지할 수 있습니까?

감사합니다.

답변

2

CoreData를 다룰 때 모든 추가/수정/삭제 작업이 NSManagedObjectContext에서 발생하지만 해당 컨텍스트에서 '저장'을 호출 할 때까지 변경 내용이 디스크에 유지되지 않습니다.

그래서 대답은 '예'입니다. 이것은 이미 얻고있는 행동입니다. NSManagedObjects의 속성을 추가하거나 수정하는 경우 이러한 변경 내용은 컨텍스트의 메모리에 보관되지만 실제로 '저장'을 호출 할 때까지 디스크에 저장되지 않습니다.

+1

문제가있는 곳입니다. 컨텍스트에서 절대로 save를 호출하지 않습니다. 세부 사항을 입력하지 않아도됩니다. 모든 필드를 자세히보기로 비워두고 내 목록으로 돌아가서이 (null 값 사용)에도 불구하고 개체가 추가 된 것을 확인하십시오. –

+0

즉, 나는 내가 잘못하고있는 것을 발견했다고 생각합니다. 그 외에도, 나는 약 5 뷰 (내게 가장 유리한 일이 아니다) 내 물건을 통과해야합니다 어떻게 쉽게 이것을 할 수 있습니까? –

+1

각각의 중간 뷰 컨트롤러가 객체와 상호 작용할 경우 객체를 각 연속 뷰 컨트롤러 (네비게이션 컨트롤러 스택을 사용하고 있다고 가정 함)에 속성으로 전달하면됩니다. 뷰 2-4가 객체와 아무 관련이 없다면, 다섯 번째 뷰 컨트롤러를 첫 번째 객체의 위임자 (원래 관리 객체 참조를 가져 오는 위치)로 만드는 것이 좋습니다. – isaac

12

또한

NSEntityDescription *ed = [NSEntityDescription entityForName:@"YourManagedObject" inManagedObjectContext:managedObjectContext]; 
YourManagedObject *obj = [[[YourManagedObject alloc] initWithEntity:ed insertIntoManagedObjectContext:nil] autorelease]; 

당신의 상황에 삽입하지 않고 관리 객체를 만드는 데 사용할 수 있습니다. 나중에 [managedObjectContext insertObject:obj];을 호출하여이 작업을 수행 할 수 있습니다.

+0

당신은 내 하루를 저장합니다! 감사합니다. :) –

관련 문제