2014-04-13 3 views
1

엔티티의 속성 재설정을 완료하면 시스템이 자동으로 업데이트 작업을 수행한다는 것을 알고 있습니다. 그러나 때로는 업데이트되지 않을 수도 있습니다. 내 사진 앨범 앱에서
앨범 이름 재설정을 마치고이 앨범을 입력하면이 앨범의 사진이 예상대로 표시됩니다. 그러나 하나의 사진 (데이터베이스라는 NSManagedObject, 앨범이라는 관계)을 탭하여이 사진을 표시하기 위해 다른 ViewController를 입력하면 응용 프로그램이 충돌합니다. 그러나 앨범의 이름 변경을 마친 후 (앱이 정상적으로 작동하는 경우) 앱을 종료 한 다음 앱을 다시 시작하면 모든 것이 잘 작동하며 충돌이 발생하지 않습니다. 그래서 추락의 원인은 시스템이 사진과 앨범의 관계를 시간에 맞게 업데이트하지 못한다는 것입니다 (특정 사진에 연결된 앨범의 이름이 정확하게 업데이트되지 않음). 데이터베이스를 수동으로 업데이트 할 수있는 방법이 있는지 알고 싶습니다. 내 업데이트 코드는 다음과 같습니다.코드에서 핵심 데이터베이스의 NSManagedObjects를 업데이트하는 방법은 무엇입니까?

+ (void)changeAlbumNameWithName: (NSString *)newName withOldName: (NSString *)oldAlbumName inManagedObjectContext: (NSManagedObjectContext *)context 
    { 
     Album *album; 
     NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Album"]; 
     request.sortDescriptors = nil; 
     request.predicate = [NSPredicate predicateWithFormat:@"name = %@", oldAlbumName]; 

     NSError *error; 
     NSArray *matches = [context executeFetchRequest:request error:&error]; 

     if ([matches count] == 1) { 
      album = matches[0]; 
      album.name = newName; 
     } 

    } 

미리 감사드립니다.

+0

[Core Data의 기존 객체를 업데이트하는 방법] 가능한 복제본 (0120)을 참조하십시오. –

+0

읽습니다. 전에, 내 문제와 같지 않아. 내 테스트에서 엔티티의 속성을 재설정 한 후 엔티티가 시간에 업데이트되었지만 업데이트 된 엔티티와 관계가있는 엔티티는 시간에 업데이트되지 않는다는 것을 발견했습니다. – Reggie

답변

0

이 문제에 대한 해결책을 찾았습니다. 앨범 이름을 업데이트 한 후 UIManagedDocument의 한 메서드 인 saveToURL : forSaveOperation : completionHandler :를 호출합니다. 이 방법을 사용하면 핵심 데이터베이스가 올바르게 업데이트됩니다.

4

변경 사항을 적용하려면 NSManagedObjectContextsave: 메서드를 호출해야합니다.

+0

죄송합니다. "앨범 .name = newName"뒤에 "BOOL didSave = [컨텍스트 저장 : & 오류]; if (didSave) { NSLog (@"저장 "); }"NSLog에 저장이 예라고 표시됩니다. 하지만 여전히 업데이트에 실패합니다. 오류가있어 & 오류가 있습니까? – Reggie