2011-07-31 2 views
1

데이터베이스에서 객체를 가져올 때마다 모든 객체를 가져옵니다. 이제 데이터베이스에 저장된 일부 개체 만 테이블 뷰에서 가져와 표시해야합니다.Bool 속성과 일치하는 일부 객체 만 가져 오는 방법

이렇게하려면 내 엔터티 BOOL 특성에 새 특성을 추가하여 상황에 따라이 특성 값이 YES 또는 NO 인 개체 만 가져올 수 있다고 생각했습니다.

이렇게 할 수 있습니까?

유용 할 수있는 NSFetchRequest 클래스의 -setPropertiesToFetch: 메서드를 찾았지만 BOOL의 다른 값을 볼 수 있는지 여부는 알 수 없습니다.

답변

3

그냥 술어 만 사용하려는 것 같습니다. NSPredicate Class Reference은 어떻게 사용하는지에 대한 좋은 아이디어를 제공합니다. 기본적으로 필터는 결과에 필터를 추가합니다. 예를 들어, myBool이라는 속성을 가진 핵심 데이터 객체가 BOOL이라고 가정 해 봅시다 (물론 NSNumber로 저장됩니다). 이를 기반으로 결과를 필터링하려면 다음과 같이 사용하십시오.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"myBool == %@", [NSNumber numberWithBool:YES]]; 
[fetchRequest setPredicate:predicate]; 

그런 다음 정상적으로 계속하십시오. 그러면 myBool 값이 YES 인 결과 만 반환됩니다.

즉, 단순히 tableView를 채우는 요청을 사용하는 경우 NSFetchedResultsController을 사용하는 것이 더 나을 것입니다. 구현 방법에 대한 훌륭한 자습서는 here입니다.

+2

+1 데이터 모델의 엔티티에 속성을 추가하면 안되기 때문에 추가하면됩니다. 엔티티 속성은 앱이 처리하는 실제 개체, 이벤트 또는 조건의 속성을 면밀히 모방해야합니다. 예를 들어 앱을 사람들과 거래하고'Person' 객체를 가지고 있다면'firstName' 속성을 가지지 만'displayInThirdView' 속성은 갖지 않을 것입니다. 첫 번째는 실제 사용자의 속성이지만 후자는 데이터 모델에 속하지 않는 구현 세부 사항입니다. – TechZen

+0

정말 고마워 ... 이거 정말 훌륭해;) 나는 더 자주 술어를 사용해야한다 : D – matteodv