2014-01-16 2 views
2

코어 데이터를 사용하여 테이블보기를 사용하여 일일 판매 트랜잭션을 저장하는 POS 유형 앱이 있습니다. 테이블 뷰를 사용하지 않고 일별 판매 횟수와 같은 특정 핵심 날짜 속성을 검색하고 업데이트하려고합니다. 테이블 뷰는 인덱스 경로의 행을 사용하여 올바른 객체 (행)를 가리 킵니다. 페치 된 결과 컨트롤러를 사용하여 페치 된 개체 (행)를 검색합니다. 질문 : 올바른 속성 값을 검색 한 다음 업데이트 할 수 있도록 가져온 행의 인덱스를 얻는 방법은 무엇입니까? 모든 책과 예제는 표보기를 사용하여 특성을 변경합니다.표보기를 사용하지 않고 핵심 데이터 속성 업데이트

Entity Product 
Product *product; 
______________________________ 

[self setupFetchedResultsController];  (This returns one object) 

product = [NSFetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; (objectAtIndexPath - Errors of course) 

답변

1

그런 다음에 지정된 오브젝트의 인덱스 경로를 반환하기 위해 가져온 결과 컨트롤러의 방법 indexPathOfObject:를 사용하여 업데이트를 수행.

+0

덕분에 빠른 응답 패트릭을 위해! 제발 좀 도와 줄래? objectAtIndexPath를 indexPathOfObject로 대체하여 오류를 발생 시켰습니다. 선택자 "indexPathOfObject"에 대한 알려진 클래스 메소드가 없습니다. 아마도 내 부분에서 기본적인 실수 일 것입니다. 나를 위해 점들을 연결할 수 있다면 고맙겠습니다! John – John

+0

하나의 인스턴스 대신 Class NSFetchedResultsController에서 메서드를 호출하려고합니다. 대신에, 그 클래스의 인스턴스를 초기화하고 그 인스턴스의 메소드를 호출하십시오. –

4

이 경우 NSFetchedResultsController을 사용하지 않아야한다고 생각합니다. UITableView 또는 UICollectionView에서 사용하지 않으려면 사용하지 않는 것이 좋습니다. 당신은 대신 NSFetchRequest를 사용하는 아마 더 좋을 것 같아, 그것을 설정하는 매우 쉽습니다 :

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Entity"]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"someValue=1"]; 
fetchRequest.predicate = predicate; 
NSError *error = nil; 
NSArray *array = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; 

지금 당신은 당신이 인덱스 경로를 처리 할 필요없이 사용할 수있는 모든 결과와 NSArray 있습니다.

테이블에 여전히 NSFetchedResultController을 사용하는 경우 변경 사항이있을 때마다 해당 행이 계속 업데이트됩니다.

업데이트 :가, 페치에 의해 반환 된 개체 중 하나를 업데이트하려면 다음과 같이 할 수있다 :

Entity *entity = [array firstObject]; 
[entity setSomeProperty:@"CoreDataIsAwesome"]; 

NSError *error = nil; 
if ([self.managedObjectContext save:&error]) { 
    NSLog(@"Entity updated!"); 
} else { 
    NSLog(@"Something went wrong: %@", error); 
} 
+0

저는 이것을 초에 사용합니다. NSFetchedResultsController는 대리자가 테이블 뷰에 결합되어 있고 여러 결과를 표시 할 때 유용합니다. 귀하의 경우 FetchRequest가 더 나은 옵션입니다. –

+0

도움 주셔서 감사합니다. 배열은 속성을 검색하는 데 유용하지만 속성을 업데이트해야합니다. 개체를 검색하고 속성을 하나씩 늘려야합니다. 그런 다음 새 값을 저장하십시오. – John

+0

@ 존 답변을 업데이트했습니다. 희망이 도움이됩니다. –

관련 문제