아이폰 OS 자 NSPredicate에게 술어를 사용하는 간단한

. (1)  # import에  " ViewController.h " 
2  # import에  " Person.h " 
3.  
4.  @interface 의 ViewController ()
 5.  
6.  @end 
7.  
8.  @implementation 의 ViewController
 9.  
10 - ( 무효 ) {의 viewDidLoad
 11.      [슈퍼의 viewDidLoad]
 12이다      // 자 NSPredicate 재단 지정 취득한 데이터를 필터링하거나하게되어있는 클래스이다. 또한, SQL 십자가와 같은 정규 표현식, 같은 쿼리 언어의 논리적 검색 할 일련의 조건을 정의하는 표현, 자연 언어 인터페이스를 제공하는 
13      * firstNames = @ [NSArray를 @ " 앨리스 " , @ " ", @ " 찰리 " , @ " 쿠엔틴 " ];
14      NSArray를 라스트 네임 * = @ [ @ " 스미스 " , @ " 존스 " , @ " 스미스 " , @ " 버츠 " ];
15      NSArray를 세 * = @ [@ 24 @ 27 @ 33 , @ 31 ]
16      NSMutableArray를 명 * = [NSMutableArray의 배열];
17      [firstNames enumerateObjectsUsingBlock ^ ( ID  _Nonnull OBJ, NSUInteger의 IDX, BOOL * _Nonnull 정지) {
 18          인 사람 * = [이용시 ALLOC] INIT];
19          Person.firstName에 = firstNames [IDX];
20          person.lastName = 라스트 네임 [IDX];
21          인 person.age = 연령 [IDX];
22          [사람들 addObject : 사람];
(23)      }];
24      자 NSPredicate bobPredicate * = [자 NSPredicate predicateWithFormat : @ " firstName을 = '밥' " ];
25      자 NSPredicate smithPredicate * = [자 NSPredicate predicateWithFormat : @ " 이 lastName = % @ " ,@ " 스미스 " ];
26      자 NSPredicate thirtiesPredicate * = [자 NSPredicate predicateWithFormat : @ " 나이> = 30 " ];
27      
28      // [ "밥 존스"] 
(29)      NSLog ( @ " 가볍게 침 : % @ " , [사람들 filteredArrayUsingPredicate : bobPredicate]);
30      // [ "앨리스 스미스", "찰리 스미스"] 
(31)      NSLog ( @ " 스미스 : % @ " , [사람들 filteredArrayUsingPredicate : smithPredicate]);
32      // [ "찰리 스미스", "쿠엔틴 버츠"
[filteredArrayUsingPredicate 명 : thirtiesPredicate]);
 (34)는      
35      / * 
36       필터있는 NSArray / NSMutableArray를 NSSet 및 / NSMutableSet의 술어로합니다 (predicateA)를 제공하기위한 기반 방법.
37       및 filteredSetUsingPredicate : 불변 컬렉션이있는 NSArray 및 NSSet는 반환 수신 선언문을 평가 불변 세트 filteredArrayUsingPredicate한다는 방법이있을 수있다
 (38)는       , NSArray를 * 배열 = [NSArray를 배열]
 39       ] [bobPredicate 배열 filteredArrayUsingPredicate]
 40       NSSet * SET = [NSSet 세트]
 (41)가       [설정 filteredSetUsingPredicate : bobPredicate]
 42은       
43이다       filterUsingPredicate 변수 집합있는 NSMutableArray 및 NSMutableSet이 방법이 사용될 수있다 : 그것은 FALSE 객체에 술어 평가하여 실행하여 제거되는 전송 될 수있다
 (44)      * = TempArray있는 NSMutableArray [NSMutableArray의 배열]
 45       [tempArray filterUsingPredicate : bobPredicate]
 46이다       NSMutableSet TEMPSET * = [SET NSMutableSet]
 47       [TEMPSET filterUsingPredicate : bobPredicate]
 48       NSDictionary와이 (그것의 키와 값의 필터 조건을 사용할 수있는 둘 우리는) NSArray를 개체입니다. NSOrderedSet가있는 NSArray NSSet 또는 새로운 명령 세트를 필터링함으로써 생성 될 수 있고, 또는 단순히 removeObjectsInArray 수, NSMutableSet는 필터 조건 무효화 통과
 49       
50       코어 자 NSPredicate 사용 데이터
 (51)이다       NSFetchRequest 술어가 지정 될 수있는 특성을 갖는다 관리 객체는 논리적 조건을 취득해야한다. 술어가 여기서도 똑같이 적용되는 이용 조건은, 유일한 차이점은 그렇게하고, 관리 객체 환경에서 영구 저장소 단말기 (영구 저장소 코디네이터)에 의해 평가 조건보다는 메모리의 필터로서 설정되고보다.
52       * / 
53      
54      // 술어 구문
 55      //대안
 56      @ % @ 개체에 대한 대안 번호 나 날짜 문자열이다; % K 키 경로의 대안 
57      
58      자 NSPredicate ageIs33Predicate * = [자 NSPredicate predicateWithFormat는 : @ " % K % = @ " , @ " 나이 " @ 33이다 ]
 (59)      // [ "찰리 스미스"] 
60      NSLog은 ( @ " 33 세이며 % @ " , [명 filteredArrayUsingPredicate : ageIs33Predicate]);
 (61)는      // $ VARIABLE_NAME는 자 NSPredicate -predicateWithSubstitutionVariables 될 수 대체 값. 
62      자 NSPredicate namesBeginningWithLetterPredicate * = [자 NSPredicate predicateWithFormat : @ "(firstName을 BEGINSWITH [CD] $ 레터) OR (이 lastName BEGINSWITH [CD] 문자 $) " ]
 (63)가      // 앨리스 스미스", "버츠 쿠엔틴"] [ " 
64      NSLog ( @" 'A'이름 % @ " , [filteredArrayUsingPredicate 사람들 [namesBeginningWithLetterPredicate predicateWithSubstitutionVariables : {@ @ " 문자 " : @ " " }]);
 65 (66) / * 67      염기성 비교
 68      = == 식 좌우 동일하다
 (69)      > = =>보다 크거나 식의 좌우에 발현 동일한
 70      <=, = 상기 오른쪽 식의 왼쪽 이하의 <식
 71      >
오른쪽에있는 표현의 좌측 발현보다 크고 72     
     
           <왼쪽 식 적게 오른쪽 발현보다
 73       ! =, 왼쪽 <> 식 오른쪽에있는 식으로 동일하지 않다
 (74)       
(75)       의 왼쪽 또는 오른쪽 발현 개재 값의 표현에 동일한 사이. 오른쪽 컬럼의 숫자 상부 지정된 두 값의 하한 (주어진 순서 열의 수)이다. {0.33} 또는 {$ LOWER, $ BETWEEN ¥ 입력 사이에 예 1
 UPPER}. 76       
(77)       , 염기성 화합물 술어
 (78)       는 AND 논리 AND &&
 79       OR 논리 OR ||
 80       NOT 논리 NOT!
 81       
82       문자열 비교
 83       문자열 비교 기본 케이스 케이스 구분 톤이다. 만약 C 및 D는 지정된 오퍼레이터에 대응하는 괄호의 키자를 변경하는 대소 문자 피치, 아니다
 84       BEGINSWITH 다음 시작으로 왼쪽 오른쪽에 발현 식
 85       포함되어 상기 좌우의 표현을 포함 식
 86       EndsWith : 결국 같은 식의 오른쪽 왼쪽 식
 87       기관 : 좌측 식은 식의 오른쪽과 같다 :? 그리고 *는 와일드 카드로 사용할 수 있습니다? 하나 개의 문자가, * 경기는 0 개 이상의 문자와 일치
88       MATCHES를 들어 왼쪽 스타일 ICU v3의 정규식 비교에 발현 오른쪽식이 동일하다
 (89)       
(90)       전체 동작
 91 것은       동작 1 개 관계
 (92)       다음 식의 요소를 지정 SOME의 ANY. 예를 들어, ANY children.age <18.
 93       
94       * / 
95 }

사용자 정의 Person 클래스

1  # import에 <재단 / Foundation.h>
 2  
3  @interface 이용시 : NSObject의
 4  
5 @property (비 원자, 복사)는 NSString * firstName을;
6 @property (비 원자, 복사)는 NSString * 이 lastName;
7 @property (비 원자 강한)의 NSNumber의 *의 시대;
8  
9  @end
1  # import에  " Person.h " 
2  
3  @implementation 4  
(5) - (*는 NSString ) 설명 {
 6       [있는 NSString stringWithFormat : @ " % @ % @ " , self.firstName, self.lastName];
7 }

추천

출처www.cnblogs.com/wanli-leon/p/12149096.html