2017-02-14 2 views
0

Я пытаюсь фильтровать через свою CoreData для соответствующего имени, а если он существует, игнорировать его или добавлять новые данные Name to Core. Проблема, которую я испытываю, должна быть простой, но я не могу это понять.Проблема с соответствием кодирования ключевого слова NSPredicate и CoreData

here's a link to a shot of my code

значение в моей CoreData является "trackName" типа String, но я получаю следующее исключение:

, истекающее приложение из-за неперехваченное исключение 'NSUnknownKeyException', причина: «[valueForUndefinedKey: ]: этот класс не является ключевым для кодирования для ключевого трека.

Как я могу продолжить? Разве не ясно, что запрос Fetch для строки?

+0

Не размещайте изображения. Почтовый код! Решение довольно простое, но никто не хочет перепечатывать код с экрана. – vadian

+0

Спасибо за отзыв! Я отправлю код в следующий раз, когда я (неизбежно) попрошу о помощи haha ​​ – AaronBeReal

ответ

0

Вы звоните value(forKey:) на примере NSFetchRequest, но этот ключ определяется только для NSManagedObject экземпляров, которые представляют вашу Track сущности.

Запрос на выборку представляет собой объект, представляющий запрос Core Data. Основываясь на вашем коде, я предполагаю, что вы пытаетесь обеспечить, чтобы свойство trackName было уникальным для всех объектов Track. Вам нужно указать execute() запрос на выборку и проверить, чтобы массив, возвращаемый этим методом, пуст.

+0

Спасибо @DaveWeston, это действительно помогает. Вы правы, что я пытался убедиться, что я не входил в дубликаты объектов Track, если «trackName» уже существует. Поскольку я новичок в основных данных (в общем, честно говоря), я не знал, как получить доступ к битам, полученным в моем запросе – AaronBeReal

0

Пожалуйста, обновляя свой код к этому и пытаются

if result == nil { 
    //result is null because you entered string is not found the valueForkey is also not found in your result 
    print("new entry") 
}else{ 
    print("added") 
} 
Смежные вопросы