gpt4 book ai didi

swift - 如何对包含 Core Data 过滤数据的 UITableView 实现滑动删除?

转载 作者:行者123 更新时间:2023-11-30 13:21:31 24 4
gpt4 key购买 nike

我有两个带表格 View 的 VC,第一个显示类别,第二个显示所选类别的项目(食谱)。我可以使用 NSPredicate 让 RecipeTableVC 显示过滤后的数据,但我还没有完全弄清楚如何从 Core Data 中删除配方,因为显示的数据是一个仅包含谓词数据的变量。

这是我的获取:

func attemptRecipeFetch() {
let fetchRecipeRequest = NSFetchRequest(entityName: "Recipe")
let sortDescriptor = NSSortDescriptor(key: "name", ascending: true)
fetchRecipeRequest.sortDescriptors = [sortDescriptor]

let controller = NSFetchedResultsController(fetchRequest: fetchRecipeRequest, managedObjectContext: ad.managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
fetchedRecipeController = controller

do {
try self.fetchedRecipeController.performFetch()
let allRecipes = fetchedRecipeController.fetchedObjects as! [Recipe]
recipesOfCategory = allRecipes.filter { NSPredicate(format: "category = %@", selectedCategory!).evaluateWithObject($0) }
} catch {
let error = error as NSError
print("\(error), \(error.userInfo)")
}
}

所以填充我的表的是recipesOfCategory 数组。

这是迄今为止我尝试删除的内容:

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
recipesOfCategory.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
ad.managedObjectContext.delete(recipesOfCategory[indexPath.row])
}
}

这会崩溃,我明白原因,但仍然没有找到解决方案。有没有办法实现滑动删除,从核心数据中删除配方?我是否使用正确的方法用过滤后的数据填充表格?

最佳答案

我使用以下代码在我最近使用的应用程序的表格 View 中“滑动以从核心数据中删除”。我可以为你工作。

在您的“tableView:commitEditingStyle”中,

<强>1。设置 CoreData 访问...

let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext

<强>2。删除所需的行+包括。来自核心数据...

if editingStyle == UITableViewCellEditingStyle.Delete {

context.deleteObject(self.resultsList[indexPath.row]) // Always before as CoreD

        self.resultsList.removeAtIndex(indexPath.row)
do {
try context.save()
} catch {
print("Error unable to save Deletion")
}

} // end IF EditingStyle

self.tableView.reloadData()

关于swift - 如何对包含 Core Data 过滤数据的 UITableView 实现滑动删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37732592/

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