gpt4 book ai didi

iOS Swift Core Data 如何从 NSFetchedResultsController 中搜索 FetchedObjects

转载 作者:行者123 更新时间:2023-11-28 14:04:22 26 4
gpt4 key购买 nike

我有一个名为 AssetEntityAsset 有两个属性id:UUIDdata:NSData。我有一个名为 fetchedAssetsControllerNSFetchedResultsController

我使用以下方法获取所有 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

我的问题是这样的;我需要能够通过它们的id 搜索我的Assets,而不影响tableView 的fetchedObjects。目前,要通过 id 查找 Asset,我正在执行以下操作;

func findIndexPathOfAssetByID(_ assetID: UUID) -> IndexPath? {
for asset in fetchedAssetsController.fetchedObjects {
if asset.id == assetID {
return fetchedAssetsController.indexPath(forObject: asset)
}
}
return nil
}

这似乎是一种非常不直观且费力的方法。我考虑过使用第二个 NSFetchedResultsController 来寻找我想要的 Asset id,但我相信这会覆盖表格 View 。由于我对 CoreData 还是个新手,所以我确信有一些功能我很幸运地没有意识到,或者我正在以完全错误的方式接近它..

实现我想要做的事情的最佳方式是什么?

最佳答案

更有效的方法是

func findAsset(by assetID: UUID) -> Asset? {
return (fetchedAssetsController.fetchedObjects as! [Asset]).first{ $0.id == assetID }
}

func findIndexOfAsset(by assetID: UUID) -> Int? {
return (fetchedAssetsController.fetchedObjects as! [Asset]).index{ $0.id == assetID }
}

关于iOS Swift Core Data 如何从 NSFetchedResultsController 中搜索 FetchedObjects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53150878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com