일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- clean architecture
- SWIFT
- Observable
- MVVM
- RxCocoa
- rxswift
- combine
- UICollectionView
- 리펙토링
- 애니메이션
- Clean Code
- 클린 코드
- 리펙터링
- Human interface guide
- swift documentation
- swiftUI
- Protocol
- map
- HIG
- collectionview
- Refactoring
- ios
- Xcode
- uiscrollview
- tableView
- UITextView
- uitableview
- ribs
- 리팩토링
- 스위프트
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 14. UISearchBar와 NSPredicate(코어데이터 조건문) - (4) 본문
[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
'iOS 실전 (swift) > 데이터베이스' 카테고리의 다른 글
[iOS - swift] 13. 코어 데이터(Core Data)의 개념(실습) - (3) (0) | 2020.05.19 |
---|---|
[iOS - swift] 12. 코어 데이터(Core Data)의 개념 - (2) (0) | 2020.05.18 |
[iOS - swift] 12. 코어 데이터(Core Data)의 개념 - (1) (0) | 2020.05.13 |
[iOS - swift] 11. FMDB 데이터베이스 (실습) (0) | 2020.05.10 |
[iOS - swift] 10. FMDB 데이터베이스 (기본) (0) | 2020.05.09 |