【问题标题】:How can I delete object from core data in swift 3如何在 swift 3 中从核心数据中删除对象
【发布时间】:2016-11-23 04:41:04
【问题描述】:

这就是我将数据保存到核心的方式,现在我想从整个数据中删除特定对象。我该怎么做?
这就是我保存数据的方式:

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 对象与另外两个对象有关系,我只想删除特定对象,而不是全部。这意味着删除(product.purchase_id == "selected_purchse_id"),在UITableView
该怎么做?

【问题讨论】:

    标签: ios core-data swift3


    【解决方案1】:

    检查此代码以进行 swift 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获得更多信息

    【讨论】:

      猜你喜欢
      • 2016-10-27
      • 1970-01-01
      • 2023-04-02
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      相关资源
      最近更新 更多