У меня есть Entity
, называемый Asset
. Asset
имеет два свойства id : UUID
и data : NSData
. У меня есть NSFetchedResultsController
с именем fetchedAssetsController .
Я получаю все Assets
, используя:
let request = Asset.fetchRequest() as NSFetchRequest<Asset>
do {
fetchedAssetsController = NSFetchedResultsController(fetchRequest: request, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
fetchedAssetsController.delegate = self
try fetchedAssetsController.performFetch()
} catch let error as NSError {
print("Could not get Assets. Error:\(error), \(error.userInfo)")
}
У меня есть tableView, который затем заполняется fetchedAssetsController.fetchedObjects
Моя проблема в этом; Мне нужно, чтобы также мог осуществлять поиск по моим Assets
по их id , не затрагивая выбранные объекты для tableView. В настоящее время, чтобы найти Asset
по id , я делаю следующее;
func findIndexPathOfAssetByID(_ assetID: UUID) -> IndexPath? {
for asset in fetchedAssetsController.fetchedObjects {
if asset.id == assetID {
return fetchedAssetsController.indexPath(forObject: asset)
}
}
return nil
}
Это кажется невероятно не интуитивным и трудоемким способом сделать это. Я думал об использовании второй NSFetchedResultsController
для поиска нужного Asset
по id , но я верю, что это заменит мою исходную выборку, используемую TableView
. Поскольку я все еще новичок в CoreData
, я уверен, что есть какая-то функциональность, о которой я блаженно не подозреваю или что я подхожу к этому совершенно неправильно ..
Как лучше всего добиться того, чего я добиваюсь?