SWIFT에서 핵심 데이터로 쓰고 읽으려고합니다. 새로운 데이터를 작성하고 기존 데이터를 읽는 데는 모든 것이 좋습니다. 하지만 지금은 레코드를 업데이트하고 싶습니다. ("pagina"가 "1"이라고 말하면됩니다.) 갑자기 완전히 잃어버린 느낌입니다! 그것이 가장 좋은 방법이라고 생각하기 때문에 배치 업데이트를 살펴 보았습니다. 불행히도 내가 찾은 자습서 중 아무 것도 나를 위해 충분하지 않은 것 같습니다.코어 데이터로 속성을 업데이트하는 방법
엔티티 "스토리"를 만들고 "pagina"(String), "plaats"(String) 및 "naam"(String)의 세 가지 속성을 추가했습니다. 이 작업을 수행하는 방법은 txtPagina.text에서 페이지 번호를 검색하여 Pagina 변수에 저장하는 것입니다. 그런 다음 txtPlaats.text 및 txtNaam.text의 UITextField 내용으로 레코드를 업데이트합니다. 여기서 pagina = Pagina. 그것은 충분히 간단 해 보인다. 불행히도 배치 업데이트를 파악할 수 없습니다. 아무도 도와 줄 수 있습니까? 나는 여기서 완전히 잃어 버렸어.
@IBAction func btnSave(){
var Pagina = txtPagina.text
var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!
//check if data exists
var request = NSFetchRequest(entityName: "Stories")
var results:NSArray = context.executeFetchRequest(request, error:nil)!
if(results.count > 0) {
Pagina = "\(results.count)"
txtPagina.text = Pagina
//code to update plaats and naam where pagina = Pagina
} else {
var newStory = NSEntityDescription.insertNewObjectForEntityForName("Stories", inManagedObjectContext: context) as NSManagedObject
newStory.setValue(Pagina, forKey: "pagina")
newStory.setValue("\(txtPlaats.text)", forKey: "plaats")
newStory.setValue("\(txtNaam.text)", forKey: "naam")
context.save(nil)
println(newStory)
println("Object Saved.")
}
}
무엇이 문제입니까? 이게 효과가있는 것처럼 보입니다. 한 가지 제안은'newStory'를'Stories' 객체로 취급하여 setVale 대신에'newStory.pagina = Pagina'와 같은 것을 쓸 수있게하는 것입니다. – oltman
위의 코드에는 아무 문제가 없습니다. 그러나 insertNewObjectForEntityForName은 기존 속성을 업데이트하지 않고 새 속성 만 추가합니다. 속성을 업데이트하는 방법이 있습니까? – etimm
'insertNewObjectForEntityForName'은 정확하게 말합니다 - 새 객체를 삽입합니다. 이미 생성 된 객체를 업데이트하고자한다면'results' 배열에있는 항목에 값을 설정해야합니다. – oltman