【发布时间】:2018-02-02 10:01:07
【问题描述】:
我正在将项目保存到收藏夹并在 tableView 中检索它们。但是现在用户可以添加这些项目的副本。我试图通过检查该项目是否已存在于 CoreData 中来避免这种情况,因此防止该项目再次被保存。我怎样才能做到这一点
var item: ItemModel?
func saveItemsToCoreDataStack(completion: @escaping ()-> Void) {
managedObjectContext!.perform {
do {
try self.managedObjectContext?.save()
completion()
print("Item saved to Database")
} catch {
print("Sorry Coudn't save itemto Database \(error.localizedDescription)")
}
}
}
var items = [Item]()
var managedObjectContext: NSManagedObjectContext? {
return (UIApplication.shared.delegate as! AppDelegate ).persistentContainer.viewContext
}
var fetchResultController: NSFetchedResultsController<Item>!
func retrieveitemsFromDatabase() {
fetchItemFromCoreData { (items) in
if let item = items {
self.items = item
self.tableView.reloadData()
}
}
}
func fetchItemFromCoreData(completion: ([Item]?)-> Void) {
var results = [Item]()
let request: NSFetchRequest<Item> = Item.fetchRequest()
do {
results = try managedObjectContext!.fetch(request)
completion(results)
} catch {
print("Sorry couldn't fetch item from Database \(error.localizedDescription)")
}
}
【问题讨论】: