1

ManagedObject를 변경하고 해당 변경 사항을 영구 저장소에 저장하는 데 문제가 있습니다.NSManagedObject에 변경 사항 저장

작업은 개체를 삭제하고 개체를 삽입하는 것입니다. 그리고 그 객체들을 가져 오는 것. 말했듯이, 나는 가져온 관리 객체를 변경하지 못합니다.

두 개의보기 컨트롤러가 있습니다.

@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;

AppDelegate.m 파일은 애플리케이션의 최초보기 컨트롤러이 속성을 설정 : didFinishLaunchingWithOptions : 모두 공용 속성을보기 controller1 다시 통과

// get reference to view controller // 
//.. 
controller1.managedObjectContext = self.managedObjectContext; 

: 방법과 같이 managedObjectContext를 두 번째보기 컨트롤러로 푸시하면 prepareForSegue : 메소드에서 다음과 같이 수행됩니다.

// Get reference to the detail view // 
MySecondViewController *controller2 = segue.destinationViewController;   
// Pass the managed object context // 
controller2.managedObjectContext = self.managedObjectContext; 
이 두 번째 뷰 컨트롤러 내에서

나는 핵심 데이터의 개체를 가져오고이 같은 뷰 컨트롤러의 속성에 저장 ..

@property (nonatomic, strong) MyKindOfObject *object; 
... 
self.object = [fetchResults lastObject]; 

가져 오기 객체 내가 잘 결과를 얻을으로 잘 작동하는 것 같다

가져온 개체는 여러 속성을 가지며, 그 중 하나는 NSString 형식입니다. UITextField에 표시하는이 속성의 값입니다. 사용자는 여기에서 값을 변경할 수 있으며 완료되면 버튼을 누릅니다. 나는 작업을 붙잡고 나는 다음을 수행하십시오

// Save to CoreData // 
NSError *error = nil; 
if(![self.managedObjectContext save:&error]){ 
    // handle the error // 
    NSLog(@"is error"); 
} 
else{ 
    NSLog(@"no error"); 
} 

1)이 뷰 컨트롤러에 사용자 돌아갑니다 다음에 다시 오브젝트 것 : 핵심 데이터를 저장하려고 다음

self.object.mytext = textField.text; 

을 가져올 수 있습니다. 그러나 여전히 오래된 가치가 있습니다.

2) 또한 SQLite Manager라는 Firefox 부가 기능을 사용하여 관련 sqlite 파일 내의 데이터를 주시합니다. 코드를 단계별로 실행할 때 save 메소드를 호출 한 후 파일에서 아무 것도 변경되지 않습니다.

또한 Xcode 내에서 변수보기를 사용하여 self.managedObjectContext 객체를 감시합니다. 내 객체에 새 데이터를 저장할 때 save를 호출하기 직전에 self.managedObjectContext의 속성 중 하나도 변경되지 않습니다 (unprocessedChanges 또는 changedObjects 등).

4) I 또한 managedObjectContext의 hasChanges 메소드 호출에 추가되지 않지만이 어떠한 리턴

if([self.managedObjectContext hasChanges]){ 
    NSLog(@"changes managed object context!"); 
} 

5) I에도 관련 managedObject의 hasChanges 메소드 호출을 첨가하지만,이 역시 반환 NO :

if([self.object hasChanges]){ 
    NSLog(@"changes in managed object!"); 
} 

나는 여기에서 완전히 잘못된 것을하고있다. 그러나 나는 그것이 무엇인지 알 수 없다. 진정으로 누군가 나를 도울 수 있기를 바랍니다. 미리 감사드립니다.

답변

1

나는 내 자신의 질문에 대답하게한다 : 나는 뉴비가 참으로 완전히 잘못된 것을했다.나는 내가 사과를 더 잘 알고 있다고 생각하고 있었다. 교훈 : 나는하지 않는다!

모델 내에 엔티티를 만든 후에는 각 엔티티 (또는 각 엔티티에 대해 실제로 NSManagedObject 하위 클래스)에 대한 사용자 지정 관리 객체 클래스를 만들었습니다. 생성 된 구현 파일 내에서 모든 속성 (특성)은 @dynamic로 구현됩니다. 지식의 부족 때문에 나는 이것을 이해하지 못했거나 인식하지 못했습니다. 그래서 저의 newby는 모든 것을 @synthesize로 바꾸도록했습니다.

바라기를이 포스트는 다른 newby가 동일한 실수를하지 않도록 도움을 줄 수 있기를 바랍니다.

+2

나는이 실수를 저질렀습니다. 필터링되지 않은 분노로 약 4 시간 후에 수정되었으며 모든 것이 다시 작동합니다. Brabbeldas 내가 널 사랑해. –