2017-02-17 1 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 예, 죄송합니다.) 확인 -> 발견 된 경우 삭제 및 저장 -> 저장하지 않는 경우에만 – 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 {} 
    } 
} 

에 값을 만듭니다.

0
  • 가져 오기 개체입니다.
  • 새 개체가없는 경우 개체를 만듭니다.
  • 업데이트.
  • 컨텍스트를 저장하십시오.

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)") 
    } 
} 

참고 : 난 더 이상, 컴파일러 오류가 발생할 수 있습니다 스위프트 2를 사용하고 있지 않다.

+0

작동하지만 값이 엔터티에 없으면 "엔터티에 없습니다" – k0le