Swift Core Data NSP Предсказать статическую проблему - PullRequest
0 голосов
/ 27 марта 2019

Я хотел бы сделать предикат более гибким для изменений. У меня есть много таких строк в исходном коде:

let predicate = NSPredicate(format: "bodyPart.name = %@", name)

let filteredExercises = ExerciseEntity.mr_findAll(with: predicate)

но, как вы видите, если я когда-нибудь поменяю имя BodyPart на MuscleGroup, например, это вызовет проблему вроде:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath bodyPart.name not found in entity <NSSQLEntity ExerciseEntity id=5>'

Я ищу решение с такими ключевыми путями, как

let predicate = NSPredicate(format: "%@ = %@", \BodyPart.name, name)

1 Ответ

2 голосов
/ 27 марта 2019

Используйте% K для замены пути ключа

let predicate = NSPredicate(format: "%K = %@", #keyPath(BodyPart.name), name)
...