如何从swift中删除核心数据中的对象3
这是我如何将数据保存到核心,现在我想从整个数据中删除特定的对象。 我怎样才能做到这一点?
这是我如何保存数据:
func saveProductDetails(product : Product) { // set user_id product.user_id = UserDefaults.sharedInstace.getCustomerId() //save data locally for the time been let entity = NSEntityDescription.entityForName("Product", inManagedObjectContext: self.writeContext) let category = NSEntityDescription.entityForName("Category", inManagedObjectContext: self.writeContext) let brand = NSEntityDescription.entityForName("Brand", inManagedObjectContext: self.writeContext) var entityProduct = NSManagedObject(entity: entity!, insertIntoManagedObjectContext:self.writeContext) var entityCategory = NSManagedObject(entity: category!, insertIntoManagedObjectContext:self.writeContext) var entityBrand = NSManagedObject(entity: brand!,insertIntoManagedObjectContext: self.writeContext) entityProduct = product.settingManagedObject(entityProduct) entityProduct.setValue(String(Utill.sharedInstace.getTimeStamp()), forKey: "time_stamp") entityProduct.setValue(Constant.Status.STATUS_NOT_VERIFIED, forKey: "status") if product.categoryObject != nil{ product.categoryObject.user_id = UserDefaults.sharedInstace.getCustomerId(); entityCategory = product.categoryObject.settingManagedObject(entityCategory) } if product.brandObject != nil{ product.brandObject.user_id = UserDefaults.sharedInstace.getCustomerId(); entityBrand = product.brandObject.settingManagedObject(entityBrand) } entityProduct.setValue(entityCategory, forKey:"category") entityProduct.setValue(entityBrand, forKey: "brand") writeContext.performBlock { do { try self.writeContext.save() self.managedContext.performBlock({ do{ try self.managedContext.save() } catch let error as NSError { print("Could not save \(error), \(error.userInfo)") } }) } catch let error as NSError { print("Could not save \(error), \(error.userInfo)") return } } }
此Product
对象与其他两个关系有关系,我只想删除特定的对象,而不是全部。 这意味着在UITableView
删除( product.purchase_id == "selected_purchse_id"
)。
怎么做?
检查这个代码的快速3核心数据操作
import CoreData class CoreDataOperations: NSObject { // MARK: Save data func saveData() -> Void { let managedObjectContext = getContext() let personData = NSEntityDescription.insertNewObject(forEntityName: "Person", into: managedObjectContext) as! Person personData.name = "Raj" personData.city = "AnyXYZ" do { try managedObjectContext.save() print("saved!") } catch let error as NSError { print("Could not save \(error), \(error.userInfo)") } catch { } } // MARK: Fetching Data func fetchData() -> Void { let moc = getContext() let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Person") do { let fetchedPerson = try moc.fetch(fetchRequest) as! [Person] print(fetchedPerson.count) for object in fetchedPerson { print(object.name!) } } catch { fatalError("Failed to fetch employees: \(error)") } } // MARK: Delete Data Records func deleteRecords() -> Void { let moc = getContext() let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Person") let result = try? moc.fetch(fetchRequest) let resultData = result as! [Person] for object in resultData { moc.delete(object) } do { try moc.save() print("saved!") } catch let error as NSError { print("Could not save \(error), \(error.userInfo)") } catch { } } // MARK: Update Data func updateRecords() -> Void { let moc = getContext() let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Person") let result = try? moc.fetch(fetchRequest) let resultData = result as! [Person] for object in resultData { object.name! = "\(object.name!) Joshi" print(object.name!) } do{ try moc.save() print("saved") }catch let error as NSError { print("Could not save \(error), \(error.userInfo)") } } // MARK: Get Context func getContext () -> NSManagedObjectContext { let appDelegate = UIApplication.shared.delegate as! AppDelegate return appDelegate.persistentContainer.viewContext } }
您可以从https://github.com/rajkumar24u/CoreDataOperations获得更多信息