관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 14. UISearchBar와 NSPredicate(코어데이터 조건문) - (4) 본문

iOS 실전 (swift)/데이터베이스

[iOS - swift] 14. UISearchBar와 NSPredicate(코어데이터 조건문) - (4)

jake-kim 2020. 5. 20. 04:32

코어 데이터에서 검색바와 조건문을 활용할 것,

코어 데이터 개념 : ios-development.tistory.com/93

1. UISearchBar

- 테이블 뷰와 함께 사용하여 특정 내용만 필터링하는 데에 이용되는 객체

1) 주로 사용되는 메소드

메소드명 내용
SearchBar(_:textDidChange:) 사용자가 검색바의 텍스트를 변경했을 때 호출
SearchBar(_:shouldChangeTexttIn:) 지정된 범위의 값을 주어진 문자열로 대체할지 여부 결정하기 위해 호출
SearchBarShouldBeginEditing(_:) 검색 바에서 편집을 시작했을 때 호출
SearchBarTextDidBeginEditing(_:) 텍스트 편집을 시작했을 때 호출
SearchBarShouldEndEditing(_:) 검색 바에서 편집을 중지할지 여부를 결정할 때 호출
SearchBarTextDidEndEditing(_:) 검색 바의 텍스트 편집을 완료했을 때 호출
SearchBarSearchButtonClicked(_:) 검색 버튼을 눌렀을때 호출

2) 검색 바 생성 및 이벤트

- 테이블 뷰 위에 "Search Bar"추가

- ctrl + 드래그 하여 뷰 컨트롤러에 검색바 delegate 등록

일반적으로 입력한 것을 단순히 검색을할 때 이벤트를 발생하는 경우라면 다음과 같이 코드 작성

- 검색 바에 입력된 텍스트 가져오기 : searchBar.text

 

키보드에 있는 이동버튼 터치시, 검색창의 검색버튼 호출은 자동으로 결정되어 있음

※ 시물레이터에서 키보드 화면이 안나올 경우 : cmd + k (키보드 닫기 : shift+cmd+k)

2. NSPredicate

1) 개념

- SQL문에서 WHERE문과 같은 조건문

let pred = NSPredicate(format: <검색조건 표현식>, <바인딩 변수>)
fetchRequest.predicate = pred

검색조건 표현식 : %@(문자열), %K, %d(정수), &&(and연산자), "and"(&&와 동일)

이것을 따루면 확정성이 있기 때문에 표현식을 사용하는 것을 권장

 

2) 표현식

(1) %d

사원코드가 3인 조건을 검색하는 코드, 2번째 코드가 확장성 있는 코드

NSPredicate(format: "empCd == 3")
NSPredicate(format: "empCd == %d", 3)

 

(2) %@

날짜 비교에도 사용가능

let df = DateFormatter()
df.dateFormat = "yyyy.MM.dd"
let startDate = df.date(from: "2020.01.01")! as CVarArg
let endDate = df.date(from: "2020.05.10")! as CVarArg
NSPredicate(format: "joindate >= %@ && joindate <= %@", startDate, endDate)

 

(3) CONTAINS

"길동"이 들어가는 조건

NSPredicate(format: "name CONTAINS %@", "길동")

 

(4) CONTAINS[c] : 대소문자를 구분하지 않는 CONTAINS문

대소문자 구분하지 않고 "James"가 들어가는 조건

NSPredicate(format: "name CONTAINS[c] %@", "James")

 

(5) 와일드카드 : *, ?

* : 여러 글자의 와일드 카드

? : 한 글자의 와일드 카드

 

Predicate 포멧 살펴보기 : developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html

 

Predicate Format String Syntax

SELF Represents the object being evaluated. Comma-separated literal array For example, { 'comma', 'separated', 'literal', 'array' }. Standard integer and fixed-point notations For example, 1, 27, 2.71828, 19.75. 0x Prefix used to denote a hexadecimal digit

developer.apple.com

 

Comments