본문 바로가기
코딩 공부/Swift

NSPredicate 에서 %K 는 무엇일까?

by JH-M 2023. 3. 9.

NSPredicate의 %K는 NSString과 같은 키(key) 문자열을 포함하는 표현식(Expression)을 나타내는 포맷 지정자(format specifier)입니다. 이 포맷 지정자는 문자열 포맷을 작성할 때 사용하는 %@ 포맷 지정자와 유사하지만, 키(key) 문자열을 자동으로 따옴표로 묶어주는 역할을 합니다.

 

NSPredicate를 사용하여 코어 데이터(Core Data)를 검색하거나, 컬렉션(collection)에서 필터링하거나, 키-값 쌍(key-value pair)을 비교하는 경우, 키(key) 문자열을 동적으로 전달해야할 때가 있습니다. 이때, %K 포맷 지정자를 사용하면 키(key) 문자열을 안전하게 포함시킬 수 있으며, 오류를 방지할 수 있습니다.

 

예를 들어, 다음과 같은 코드는 "name"이라는 키(key)를 가진 객체를 검색하는 NSPredicate를 작성하는 예시입니다.

 

let name = "John"
let predicate = NSPredicate(format: "%K == %@", "name", name)

 

위의 예시에서, %K 포맷 지정자는 "name" 문자열을 안전하게 포함시켜줍니다. 이렇게 포맷 지정자를 사용하면, 키(key) 문자열을 하드코딩하는 것보다 유연하고 안전한 코드를 작성할 수 있습니다.

 

NSPredicate format string에는 여러 가지 포맷 지정자가 있습니다. 이러한 포맷 지정자는 값을 변환하거나 비교하는 데 사용됩니다. 일반적으로 사용되는 포맷 지정자는 다음과 같습니다.

 

  • %K   문자열로 된 키. 데이터의 특정 속성을 나타냅니다.
  • %d   정수 값
  • %f   부동 소수점 값
  • %@   객체. 문자열, 숫자, 날짜 등의 값을 비교하는 데 사용됩니다.
  • %i   signed int
  • %u   unsigned int
  • %x   unsigned int을 16진수로 나타냅니다.
  • %o   unsigned int을 8진수로 나타냅니다.

 

https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Predicates/AdditionalChapters/Introduction.html#//apple_ref/doc/uid/TP40001789

 

Introduction

Introduction Predicates provide a general means of specifying queries in Cocoa. The predicate system is capable of handling a large number of domains, including Core Data and Spotlight. This document describes predicates in general, their use, their syntax

developer.apple.com

 

댓글