struct Predicate<each Input> : Sendable, Codable, CodableWithConfiguration
<aside> π‘ κ²μ λλ νν°λ§μ λͺ©μ μΌλ‘ μ λ ₯κ°λ€μ μ§ν©μ κ²μ¬νλλ° μ¬μ©λλ λ Όλ¦¬μ 쑰건μ.
2023λ
NSPredicate νμ
λ체λ₯Ό λͺ©μ μΌλ‘ μΆκ°λμ΄ iOS 17, β¦ μ΄μμμ μ¬μ© κ°λ₯νλ€.
NSPredicateκ³Ό λΉκ΅ν΄ λ€μκ³Ό κ°μ μ₯μ μ΄ μλ€:
<aside> <img src="/icons/list_blue.svg" alt="/icons/list_blue.svg" width="40px" /> λͺ©μ°¨
</aside>
</aside>
Predicateμ Boolean κ°(true/false)μΌλ‘ νκ°λλ λ Όλ¦¬μ 쑰건μμ΄λ€. ννμ(expression) νΈλ¦¬ ꡬ쑰λ‘μ μ 체 predicateμ ꡬμ±νκ³ , μ°μ°μ λν νΌμ°μ°μ ννμμ ν¬ν¨ν νλμ ννμμΌλ‘μ μ μλλ€. 컬λ μ μμ νν°λ§μ μννκ±°λ νΉμ μμλ₯Ό κ²μν λ μ¬μ©νλλ°, ꡬ체μ μΈ μ£Όμ νμ©μ²λ λ€μκ³Ό κ°λ€:
NSPredicate μμ±μλ‘ Predicate β NSPredicate λ³ν κ°λ₯)
NSArray, NSSet, NSOrderedSet, NSMutableγ)Sequence νλ‘ν μ½μ filter ν¨μextension Sequence {
public func filter(_ predicate: **Predicate<Self.Element>**) throws -> [Self.Element]
}
predicateμ μμ±ν λλ #Predicate λ§€ν¬λ‘λ₯Ό μ¬μ©νμ¬ ν΄λ‘μ λ΄μ λ¨μΌ ννμμΌλ‘ 쑰건μμ μμ±νλ€:
let messagePredicate = #Predicate<Message> { message in
message.length < 100 && message.sender == "Jeremy"
}
predicateμ μμ±ν λ ν΄λ‘μ λ₯Ό μ¬μ©νμ§λ§, #Predicate λ§€ν¬λ‘λ μ»΄νμΌμ ν΄λΉ ν΄λ‘μ μ½λλ₯Ό PredicateExpressions λ€μμ€νμ΄μ€μ μ μλ ννμ(PredicateExpression) νμ
κ΅¬μ‘°λ‘ ν΄μνμ¬ Predicate νμ
μΌλ‘ λ³νμν¨λ€. (λ³΄λ€ μμΈνκ²λ, ν΄λ‘μ μ½λμ κ° ννμ μ»΄ν¬λνΈλ₯Ό μμνλ PredicateExpressionμ λ°ννλ builder νμ
λ©μλμ νΈμΆλ‘ λ³νμν€λ©°, μ΄ builder λ©μλ λν PredicateExpressions λ€μμ€νμ΄μ€μ μ μλμ΄ μλ€.) λ°λΌμ ν΄λ‘μ μ μλ μ½λλ νλ‘κ·Έλ¨μμ μ€μ λ‘ μλλλ κ²μ΄ μλλΌ, λ§€ν¬λ‘μ μ λ¬νλ μΌμ’
μ μμ²μΌ λΏμ΄λ€.
Swift Predicateμμ μ§μνλ ννμμ StandardPredicateExpression νλ‘ν μ½μ μ€μνλ ννμλ€λ§μΌλ‘ νμ λλ©°, κ°λ°μλ€μ΄ ν΄λΉ νλ‘ν μ½μ μ€μνλ μ νμ
μ μΆκ°νλ κ²μ κΈμ§λμ΄ μλ€.
PredicateExpressions λ€μμ€νμ΄μ€λ‘λΆν°, Predicate μ μ λ΄μμ μ¬μ©ν μ μλ μ°μ° λ° ννμμ μμ μλ€:
+, -, *, /,Β %-...,Β ..<<,Β <=,Β >,Β >=,Β ==,Β !=? :