2014-11-06 3 views
0

NSManagedObjectContextsave CoreData 메소드에서 문제가 발생했습니다. 먼저 Integer 16이라는 새 필드를 추가하기 위해 새 모델 버전을 만들었습니다. 그리고이 필드를 테이블 뷰에 표시해야합니다. 이전 모델 버전에는이 필드가 없으므로 데이터베이스의 초기 값은 NULL입니다. tableview:cellForRowAtIndexPath:에서 NSFetchedResultController으로 가져온 내 데이터 소스에서 NSManagedObject을 가져옵니다. 먼저 해당 필드 값을 확인합니다. NULL 인 경우 하나 만들고 레코드를 업데이트하고 데이터베이스에 컨텍스트를 저장하려면 NSManagedObjectsetValue:forKey:을 수행합니다. 그러나 .sqlite 파일을 열면 값이 저장되지 않습니다. 그래서 왜 가치가 저장되지 않는지 궁금합니다.CoreData 저장이`tableview : cellForRowAtIndexPath :`method에서 작동하지 않습니까?

한편 iOS 개발을하고 있습니다.

감사합니다.

+0

바보 같은 질문 : .sqlite 파일이 들어있는 디렉토리는 무엇입니까 ?? 번들로 액세스하려고하면 읽기 전용입니다. –

+0

개체를 성공적으로 만들고 데이터베이스에 초기 정보를 씁니다. 일부 정보를 업데이트하려는 경우 save 메서드는 아무 것도 수행하지 않습니다. – Dzanvu

+0

'tableView : cellForRowAtIndexPath :'의 변경 사항을 저장하는 것은 대단히 나쁜 생각입니다. 코드를 수정하여 작동하더라도 성능이 매우 좋지 않습니다. –

답변

0

설명만으로는 문제를 완전히 이해하지 못합니다. 특별히 코어 데이터를 설정하는 방법에 대해 몇 가지 샘플 코드를 공유하십시오.

  1. 응용 프로그램 번들에 .sqlite 파일이 있습니까? 그렇다면 읽기 전용임을 유의하십시오.

  2. 기존 데이터베이스를 업데이트하려면 tableView:cellForRowAtIndexPath:이 적합하지 않습니다. 응용 프로그램을 시작한 후에해야합니다 (한 번만).

p.s. 코어 데이터 (NSManagedObjectContext 및 NSFetchedResultsController)에 대한 기본적인 이해가 있다고 가정합니다.

+0

예, 마침내 신청서가 시작된 후에 처리합니다. 고맙습니다. – Dzanvu

관련 문제