Формат NSPredicate
следующий, где он ожидает формат, и формат содержит эквалайзер.
NSPredicate(format: <String>, <args: CVarArg...>)
let predicate1 = NSPredicate(format: "role == %@", "GK")
Здесь, если вы проверите predicate1.predicateFormat
, товы получите:
"role == \" GK \ "" ,
, которые уравнивают роль со строкой "GK"
и возвращают результат в array
.
Но для,
let predicateString = String(format:"role == %@","GK")
let predicate2 = NSPredicate(format: predicateString)
Вы заменили эквалайзер простой строкой, которая ничего не возвращает.Вы можете проверить с помощью predicate1.predicateFormat
, который вернет:
"role == GK"
Здесь вы можете использовать "role == 'GK'"
, если хотите использовать строку.
Надеюсь, это поможет.