2017-01-14 2 views
0

У меня возникла проблема с попыткой получить доступ к данным в полученных результатах из CoreData. Данные представлены в UITableView, и это отображается отлично, я пытаюсь реализовать параметр для фильтрации данных на основе атрибута. Это также отлично работает через NSCompoundPredicate.Доступ к значениям атрибутов сущности, полученным из CoreData

Запрос на выбор проходит через штраф, однако у меня есть проблемы с попыткой извлечь значения из одного из атрибутов получаемого объекта, чтобы добавить их для представления общей стоимости.

Код для извлечения отфильтрованных результатов:

func attemptFilteredFetch(filter: Array<NSPredicate>) 
{ 
    let filterCriteria: NSCompoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: filter) 
    let fetchRequest: NSFetchRequest<StoredExpense> = StoredExpense.fetchRequest() 
    let dateSort = NSSortDescriptor(key: "dateOfExpense", ascending: false) 
    fetchRequest.sortDescriptors = [dateSort] 
    fetchRequest.predicate = filterCriteria 

    let controller = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil) 
    controller.delegate = self 
    self.controller = controller 

    do 
    {    
     try controller.performFetch()    
    } 
    catch 
    { 
     let error = error as NSError 
     print("\(error)") 
    } 
    expenseList.reloadData() 
} 

До сих пор я попробовал метод, который я нашел here и аналогичные найденным в Интернете, однако приложение падает, когда функция attemptFilteredFetch() называется.

Возможно, я ошибаюсь, но я ожидаю, что я могу добавить запрос выборки в массив и перебрать его, чтобы получить общее значение.

Есть ли лучший способ? Или есть способ получить доступ к значению атрибута «на лету»?

+1

Какая ошибка отображается? Также вы изменили модель? вам может потребоваться включить миграцию света. – CryingHippo

+0

Я понял. Кажется, что вручную генерирование подкласса NSManagedObject приводит к ошибке двусмысленности. Я удалил созданную вручную модель и проблема была решена. – boywithaxe

ответ

0

Проблема связана с тем, что модель унаследована от старой версии Xcode. AFAIK в бета-версии. Сборка для того, чтобы иметь возможность использовать подклассы CoreData NSManagedObject, необходимо было создать вручную. Поскольку в окончательной версии Xcode это кажется избыточным, созданная вручную модель вызывала случайные ошибки. Удаление и очистка кода позволили решить проблемы, которые у меня были.

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