У меня есть следующая (упрощенная) модель данных:
И следующий запрос на выборку:
static func fetchRequestForItems(fromListWithName name: String) -> FetchRequest? {
let request = Item.sortedFetchRequest
request?.predicate = NSPredicate(format: "ANY %K.%K like %@", #keyPath(Item.lists), #keyPath(ItemList.name), name)
request?.sortDescriptors = [NSSortDescriptor(key: "items", ascending: true)]
return request
}
Вызывается как:
let request = Item.fetchRequestForItems(fromListWithName: "Favorites")!
let result = try! persistentContainer.viewContext.fetch(request)
Я пытаюсь получить Item
s в порядке их добавления к ItemList
s
Однако в настоящее время я получаю эту ошибку:
caught "NSUnknownKeyException", "[<Item 0x600003b7ff20> valueForUndefinedKey:]: the entity Item is not key value coding-compliant for the key "items"."
Кто-нибудь знает, как добиться получения правильно заказанных предметов без ошибок?
Обновление
Дополнительная справочная информация о том, почему я выполняю создание NSFetchRequest<Item>
вместо NSFetchRequest<ItemList>
.Причина этого заключается в том, что я надеюсь использовать извлеченный контроллер результатов типа NSFetchedResultsController<Item>
и, что более важно, это метод делегата func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?)
, который должен давать мне indexPath в том же порядке, что и элементы ItemList
.