iOS에서 술어 사용

2941 단어

술어


코코아는 주로 필터의 조건을 지정하는 데 사용되는 클래스 NSPredicate 클래스를 제공합니다. 이 클래스는 필요한 조건을 정확하게 설명하고 각 대상을 술어를 통해 선별하여 조건과 일치하는지 판단할 수 있습니다.술어는 진짜 값이나 가짜 값을 계산하는 함수를 나타낸다.코코아에 봉인된 데이터베이스 프레임워크인 코코아 데이터에서 조회(모호한 조회 포함)를 할 때도 술어를 사용한다.다음은 술어의 사용 방법과 규칙에 대해 간략하게 소개한다.
  • predicateWithFormat로 술어 만들기
  • NSPredicate *preicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@", searchString];
    
  • 그룹을 호출하는 방법filteredArrayUsingPredicate: 술어의 대상을 통해 필터링
  • // evaluate a predicate against an array of objects and return a filtered array
     (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate;    
    

    배열에 모두 객체


    술어구 규칙
  • 사실 술어도 KVC에 기초한 것이다
  • 먼저 대상을 만들어서 설명합니다
  • @interface Person : NSObject
    
    @property (nonatomic, assign) int age;
    @property (nonatomic, copy) NSString *name;
    @end
    
  • 하나의 배열을 만들고 5개의 Person 대상을 만들고 각각 Person 대상 속성에 다른 값을 부여합니다
  • KVC를 기반으로 하기 때문에 Person에 Dog 대상의 속성dog이 있다면 Dog 속성 XXX를 판단하여 선별하면dog로 쓸 수 있습니다.XXX

  • NSPredicate *pre = [NSPredicate predicateWithFormat:
    @" pid>1 and height<188.0"];
    

    술어 사용 클래스를 만드는 방법predicate WithFormat: (NSString*) format을 보았습니다. format에 있는 것들은 SQL의where 조건과 차이가 많지 않습니다.또한 매개 변수 format은 NSLog의 포맷 템플릿과 차이가 많지 않습니다. 만약에 1과 188.0이 전달된 매개 변수라면 다음과 같은 형식으로 작성할 수 있습니다.
    @"pid>%d and height
  • 연산자 작성
  • 논리 연산자
  • AND、OR、NOT

  • NSString *predicateString =@"(engine.horsepower > 50) AND (engine.horsepower     < 200)";
     
    NSString *predicateString =@"engine.horsepower BETWEEN { 50, 200 }";
     between 。 
    
  • 범위 연산자
  • BETWEEN、IN
  • IN 포함
  •  NSString *predicateString =@"name IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }";
    

    식별자 만들기 | 의미 | --| ------| | BEGINSWITH | 문자열이 다른 문자열로 시작하는지 확인| ENDSWITH | 문자열이 다른 문자열로 끝나는지 확인| CONTAINS | 문자열이 다른 문자열로 시작하는지 확인| [c] | 대소문자 구분 없음 | [d] | 발음 기호 구분 없음 없음 즉 악센트 없음 | [cd] | 대소문자 구분 없음 |
  • 사용
  •     NSString *predicateString =@"name BEGINSWITH 'Bad'"; BEGINSWITH,ENDSWITH,CONTAINS[c][d][cd]
    
  • like의 사용
  • LIKE 사용?한 문자를 나타내고 *는 여러 문자를 나타내며 c, d와 연결할 수도 있다.

  •  :
    @”name LIKE ‘???er*’”  Paper Plane  。
    

    배열에 모두 문자열


    SELF:

  • 앞의 수조에 놓인 것은 모두 대상입니다. 만약에 수조에 놓인 것이 모두 문자열(또는 다른 속성이 없는 유형)이라면 술어를 어떻게 써야 합니까?
  • 여기는 SELF를 사용합니다.
  • 예를 들어 아래의 경우 수조에 저장된 것은 모두 문자열
  • 이다.
    NSArray *arrays=[NSArray arrayWithObjects: @"Apple", @"Google", @"MircoSoft", nil];
    
    NSPredicate *preicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@", a]; 
    

    좋은 웹페이지 즐겨찾기