2017-02-17 13 views
0

привет, мне нужно перезаписать значение на CoreData, если оно уже есть. Например, если уже на CoreData меня Джоша нужно удалить этот и следующий сохранить новый ДжошПерезаписать на основе значения данных ядра

func save(value:String, forkey:String) { 
    let context = getContext() 
    let entity = NSEntityDescription.entity(forEntityName: "Lastname", in: context) 

    let add = NSManagedObject(entity: entity!, insertInto: context) 
    add.setValue(value, forKey: forkey) 

    do { 
     try context.save() 
     print("save -> \(value)") 
    } catch { 
     print("err \(error)") 
    } 
} 
+0

Посмотрите на этот учебник https://www.raywenderlich.com/145809/getting-started-core-data-tutorial. Все основные методы хорошо описаны и внедрены там. – Oleshko

+0

Вы имели в виду обновить значения, если они найдены в основных данных. ??? – Aditya

+0

@Adi да, извините;) check -> если найдено delete and save -> if not only save – k0le

ответ

0

Мы можем проверить, являются ли или нет значения. Затем обновить и создать значения в базе данных

class func checkAndUpdateAtIndex(entry_id: String, comment_text: String, comment_name: String, comment_pic: String, comment_date: String, comment_id: String, comment_isDeleted: String, comment_userid: String) { 
    let context: NSManagedObjectContext = DataAccess.shared.managedObjectContext 
    let request = NSFetchRequest(entityName: "Comment") 
    request.predicate = NSPredicate(format: "comment_id = %@", comment_id) 

    if let fetchResults = (try? DataAccess.shared.managedObjectContext.executeFetchRequest(request)) as? [NSManagedObject] { 
     if fetchResults.count != 0{ 
      //update value 
      var managedObject = fetchResults as! [Comment] 
      managedObject[0].setValue(entry_id, forKey: "entry_id") 
      managedObject[0].setValue(comment_text, forKey: "comment_text") 
      managedObject[0].setValue(comment_name, forKey: "comment_name") 
      managedObject[0].setValue(comment_pic, forKey: "comment_pic") 

     }else { 
      // create new entity if not found 
      let newItems = NSEntityDescription.insertNewObjectForEntityForName("Comment", inManagedObjectContext: context) as! Comment 

      newItems.entry_id = entry_id 
      newItems.comment_text = comment_text 
      newItems.comment_name = comment_name 
      newItems.comment_pic = comment_pic    
     } 


      do { 
       try context.save() 
      } catch {} 
    } 
} 

В этом методе Update я во-первых, получить этот объект, который мы хотим обновить и затем хранить новые значения в этом месте.

0
  • Fetch объект.
  • Создайте новый объект, если его нет.
  • Обновить атрибуты.
  • Сохранить контекст.

func save(value:String, for key:String) { 
    let context = getContext() 
    let request = NSFetchRequest(entityName: "Lastname") 
    let predicate = NSPredicate(format:"%K == %@", value, key) 
    request.predicate = predicate 
    do { 
     let fetchResults = try context.executeFetchRequest(request) 
     let object : NSManagedObject 
     if fetchResults.isEmpty { 
      let entity = NSEntityDescription.entity(forEntityName: "Lastname", in: context) 
      object = NSManagedObject(entity: entity!, insertInto: context) 
     } else } 
      object = fetchResults[0] 
     } 

     object.setValue(value, forKey: key) 

     try context.save() 
     print("save -> \(value)") 
    } catch { 
     print("err \(error)") 
    } 
} 

Примечание: Я не использую Swift 2 больше, может произойти ошибка компиляции.

+0

Это работает, но если значение не в сущности, оно дает ошибку, потому что «не найдено в сущности» – k0le