То, будут ли у вас проблемы с производительностью, зависит от размера вашей базы данных и от того, как часто вы выбираете значения.Вы должны запустить свой код через Instruments, чтобы проверить, какой процент процессорного времени он вам стоит, и кешировать все, что необходимо.
Один твик, который я бы сделал, - сохранить этот объект NSPredicate в статической переменной, поскольку он не изменится.часто.
Если у вас не много записей в таблице, лучше всего один раз извлечь весь набор записей, а затем сохранить его в NDDictionary, который вы можете искать в любое время.
Однако я думаю, что вы делаете ошибку, используя большую сложную систему (реляционную базу данных с объектно-ориентированной оболочкой) для решения очень простой задачи (поиск значения ключа).А сложные решения почти всегда медленнее и требуют больше памяти, чем простые.
Рекомендуемый способ локализации - использовать файл .strings, и я не могу думать о каких-либо преимуществах использования основных данных.У вас есть 200 МБ локализованного текста?Если нет, то я думаю, что лучше использовать файл .strings вместо основных данных.