У меня возникла проблема с попыткой получить доступ к данным в полученных результатах из 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()
называется.
Возможно, я ошибаюсь, но я ожидаю, что я могу добавить запрос выборки в массив и перебрать его, чтобы получить общее значение.
Есть ли лучший способ? Или есть способ получить доступ к значению атрибута «на лету»?
Какая ошибка отображается? Также вы изменили модель? вам может потребоваться включить миграцию света. – CryingHippo
Я понял. Кажется, что вручную генерирование подкласса NSManagedObject приводит к ошибке двусмысленности. Я удалил созданную вручную модель и проблема была решена. – boywithaxe