class NSPredicate : NSObject, NSCopying, NSSecureCoding
<aside>
π‘ Predicateμ κ°μ²΄λ€μ νν°λ§ν λ μ¬μ©νλ λ
Όλ¦¬μ 쑰건, μ¦ μ§μ(query)λ₯Ό λνλΈλ€. NSComparisonPredicate
, NSCompoundPredicate
, NSExpression
κ°μ²΄ λ±μμ predicateμ μ§μ μμ±ν μλ μμ§λ§, NSPredicate
μ νμ
λ©μλμ predicate λ¬Έμμ΄ μμμ μ λ¬νμ¬ predicateμ μμ±νλ κ²μ΄ μΌλ°μ μ΄λ€.
<aside>
β NSComparisonPredicate
, NSCompoundPredicate
, NSExpression
νμ΄μ§λ μ μλμ?
NSPredicate
μ¬μ©λ²λ§ μ μ 리νλ€λ©΄ λλ¨Έμ§ APIλ€μ 곡μ λ¬Έμλ₯Ό ν΅ν΄μλ μ΄ν΄ λ° μ¬μ©ν μ μκ² λ€κ³ νλ¨νκΈ° λλ¬Έμ΄λ€.NSPredicate
νμ
μ΄ μ Predicate
νμ
μΌλ‘ λ체λ μμ μ΄κΈ° λλ¬Έμ΄λ€.
</aside><aside>
π’ λ³ΈμΈ νλ‘μ νΈμ minimum deploymentκ° iOS 17 λ° κΈ°ν μ΄μμ΄λΌλ©΄, Predicate
νμ
μ μ¬μ©νκΈ°λ₯Ό κΆμ₯νλ€. NSPredicate
μμλ Predicate
μ μΈμλ‘ λ°λ μμ±μκ° μΆκ°λμμΌλ―λ‘, κΈ°μ‘΄ NSPredicate
μ΄ μ¬μ©λλ λͺ¨λ κ³³μμ Predicate
μ μ¬μ©ν μ μλ€. μ Predicate
νμ
μ μ 맀ν¬λ‘ μμ€ν
μ μ¬μ©νμ¬ Swift ꡬ문μΌλ‘ 쑰건μμ μμ±ν μ μμΌλ©° μλ―Έ λΆμ, νμ
μΆλ‘ , syntax highlighting λ±μ μ§μνλ―λ‘ λͺ¨λ λ©΄μμ μ°μνλ€.
λ¨, Predicate
μ NSPredicate
μΌλ‘ λ³ννκΈ° μν΄μλ λͺκ°μ§ μ£Όμμ¬νμ΄ μλ€. ν΄λΉ μμ±μ μ€λͺ
μ μ°Έκ³ νμ: 2023λ
- Predicateμ μΈμλ‘ λ°λ μμ±μ μΆκ°.
</aside>
NSPredicate λ¬Έμμ΄ μμ λ¬Έλ²
<aside> <img src="/icons/list_blue.svg" alt="/icons/list_blue.svg" width="40px" /> λͺ©μ°¨
</aside>
</aside>
predicateμ μ£Όμ΄μ§ κ°μ²΄μ λν΄ μ‘°κ±΄μΌλ‘λΆν° λ Όλ¦¬κ°(Boolean)μ λ°ννλ ꡬ문 λ¨μλ‘μ, ννμ(expression)κ³Ό μ°μ°μ(operator)μ μ‘°ν©μΌλ‘ μ΄λ£¨μ΄μ§λ€. μ£Όλ‘ λ€μ λΆλ₯μμ νμ©λλ€:
NSArray
, NSSet
, NSOrderedSet
, NSMutableγ
)<aside> β μ κ²½μ°κ° μλλ©΄ μ¬μ©ν μ μλμ?
Collection
νλ‘ν μ½μ filter
ν¨μ λ±μμ μ¬μ©λ μλ μλ€.
</aside>NSPredicate
ν΄λμ€λ λ¬Έμμ΄ μμμ ν΅ν predicate μμ± λ©μλμ predicate νκ° λ©μλλ₯Ό μ 곡νλ€. λ μλΈν΄λμ€λ₯Ό κ°μ§λ€:
NSComparisonPredicate
: κ°μ΄λ° λμΈ μ°μ°μλ₯Ό μ¬μ©νμ¬ μμΈ‘μ λμΈ ννμμ μλ‘ λΉκ΅νλ€. κ° ννμμ predicateμΌλ‘ μΆλ‘ λμ΄ νκ°λλ©°, νκ°λ κ°μ λν΄ μ°μ°μλ₯Ό νΈμΆν κ²°κ³Όλ₯Ό λ°ννλ€.NSCompoundPredicate
: λκ° μ΄μμ predicateλ€μ νκ°ν κ²°κ³Όλ₯Ό λΉκ΅νλ€. λλ νΉμ predicate κ²°κ³Όλ₯Ό 무μνλ€.λν, predicateμ ννμμ λͺ¨λ NSExpression
κ°μ²΄λ‘ λνλΈλ€. κ°μ₯ κ°λ¨ν ννμμ μμλ€. μλ₯Ό λ€μ΄, predicate λ΄μμ νκ°λλ μ€μΈ κ°μ²΄μ keypathλ‘λΆν° κ°μ μ»μ΄μ€λ κ²½μ°κ° λΉλ²ν κ²μ΄λ€. κ·Έ μΈμλ predicate λ΄μμ νκ°λλ μ€μΈ κ°μ²΄λ₯Ό λνλΌ λ, predicate λ΄μμ λ³μλ‘ μ±μμ ΈμΌ νλ λΆλΆμ placeholderλ₯Ό λνλΌ λ, λ°°μ΄ λ΄μμ μ°μ°μ μνν κ²°κ³Όλ₯Ό λ°νν λ λͺ¨λ NSExpression
μΌλ‘ ννλλ€.
predicateμ ν΅ν queryμλ μ€μ ꡬνλ κ³΅ν΅ μΈμ΄κ° μ‘΄μ¬νμ§ μμΌλ―λ‘, μμνλ λ°μ΄ν° Storeμ λ§μΆμ΄ SQL, XML, λλ κΈ°ν λ€μν νμμΌλ‘ λ²μλλ€. Cocoaμ predicate μμ€ν μ μ μ©ν λ²μμ μ°μ°μλ€μ μ 곡νλ κ²μ λͺ©μ μ λλ―λ‘, λͺ¨λ λ°μ΄ν° Storeμμ predicateμ΄ μ 곡νλ query λͺ λ Ήμ΄λ₯Ό 100% μ§μνλ κ²μ΄ μλλ©°, predicate μμ€ν μμ λͺ¨λ λ°μ΄ν° Storeκ° μ 곡νλ μ 체 μ§μ λ°©λ²μ 100% μ§μνλ κ²λ μλλ€. λ°λΌμ κ²½μ°μ λ°λΌ predicateμ μΌλΆ λν μΌλ€μ 무μλ μ μμΌλ©°(λ¬Έμμ΄ λΉκ΅ predicateμ΄ κΈ°μ‘΄ μλμ λ¬λ¦¬ λμλ¬Έμλ₯Ό ꡬλ³νμ§ μλλ€κ±°λ), μ§μλμ§ μλ μ°μ°μλ₯Ό μ¬μ©ν κ²½μ° μλ¬λ₯Ό λμ§ μλ μλ€. μλ₯Ό λ€μ΄:
MATCHES
μ°μ°μλ regexλ₯Ό μ¬μ©νλ―λ‘, Core Dataμ SQL Storeμμλ μ§μλμ§ μλλ€. (λ¬Όλ‘ , in-memory νν°λ§μμλ κ°λ₯νλ€)ALL
, ANY
, IN
λ±μ μ°μ°μκ° μ¬λ¬κ° μλ κ²½μ° νλμ μ°μ°μλ§ μ λ¬λμ΄ μ€λ₯κ° λ°μν μ μλ€.ANYKEY
μ°μ°μλ Spotlightμμλ§ μ¬μ© κ°λ₯νλ€.