2015-04-26 2 views
0

У меня есть строка (например, «Test»), и у меня также есть несколько строк, которые хранятся в CoreData. Теперь я хочу проверить, существует ли также строка «Тест» в CoreData. Поэтому я просто хочу сравнить все строки, которые сохраняются в CoreData со строкой «Тест».Сравнение строки с CoreData

Кто-нибудь из вас знает, как это сделать в Свифт?

+1

вы читали о выборки запросов в руководстве по программированию Core Data? –

+0

Итак, вы хотите получить все укусы, которые соответствуют «Тест»? Если да, используйте NSpredicates! Так например fetchRequest.predicate = NSpredicate ("NAME_OF_ATTRIBUTE = Test") – boidkan

+0

Точно. Я хотел бы проверить, есть ли строка, которая соответствует «Test». Как я могу сделать это в if-statement (если есть строка, равная «Тест, который я хотел бы запустить с кодом»)? – horst

ответ

1

Я не знаю ни одной строки решение, однако вы можете:

  • Fetch с предикатом
  • Смотрите, если возвращаемый массив пуст (он не существует в основных данных) или not (элемент существует).

var request : NSFetchRequest = NSFetchRequest(entityName: "Core_Data_Entity"); 
request.predicate = NSPredicate(format: "Property_name = %@", @"Test") 
var results : [NSManagedObject] = context.executeFetchRequest(request, error: nil) as [Core_Data_Entity] 
if (results.count > 0) { 
    //Element exists 
} 
else { 
    //Doesn't exist 
} 
+0

Я получаю следующую ошибку: 'Не удалось найти перегрузку для 'init', которая принимает предоставленные аргументы' в этой строке кода 'var results: [NSManagedObject] = context.executeFetchRequest (запрос, ошибка: nil) как [NSManagedObject] '. Это единственная ошибка, которую я получаю. Спасибо за вашу помощь! – horst

+0

Должно быть 'format:" (property_name = 'Test' ")' или '(format:" property_name =% @ "," Test ")' – Mundi

+0

@Mundi Ах да, я никогда не сравнивался с чем-то жестко закодированным, поэтому я не знал :) –

Смежные вопросы