웹 서비스에서 데이터를 가져 와서 핵심 데이터로 저장합니다. 웹 서비스에서 신선한 데이터를 가져올 때 이미 저장된 데이터가 포함되어 있습니다. 코어 데이터에는 웹 서비스에서 제공 한 각 데이터 세트의 고유 ID가 저장됩니다. 현재 구현에서는 고유 ID가있는 집합의 여러 인스턴스를 저장합니다. 그러나 나는 기존의 것을 남겨두고 새로운 것을 무시하고 싶습니다. 또는 어쨌든 동일하기 때문에 새로운 것이 기존의 것을 덮어 씁니다. 여기에 접근 방법은 무엇입니까?CoreData 새 데이터를 삽입하고 기존 데이터를 그대로두고
0
A
답변
0
먼저
덕분에, 당신은 API에서 제공되는 새로운 객체가 uniqID를 사용하여 데이터베이스에 존재하는지 확인해야합니다. 그렇다면 새로운 객체를 삽입 할 수 없다면 이전 객체를 새로운 객체로 덮어 씁니다. 새로운 객체를 삽입하는 동안
따르 샘플 코드는
//MARK:- InsertClassroom Data
func insertClassroomData(_ classRoomDict:NSDictionary) -> Classroom {
let keyValue = classRoomDict[KEY_CLASS_ROOM_ID] as! String
var classroomObj = self.getClassroom(keyValue)
if (classroomObj == nil){
classroomObj = NSEntityDescription.insertNewObject(forEntityName: "Classroom", into: managedObjectContext) as? Classroom
}
classroomObj!.setClassroomFromDict(classRoomDict)
return classroomObj!
}
당신에게
0
class func defaultInsert(data:[String:Any]) -> AppLabels {
var label = self.fetchLabelFromLabelUsingVarID(var_id: data["var_id"] as! String,screen: data["name"] as! String)
if label == nil{
label = NSEntityDescription.insertNewObject(forEntityName: "AppLabels", into: CoreDataStack.managedObjectContext) as? AppLabels
}
if data["var_id"] != nil {
label?.var_id = data["var_id"] as? String
}
if data["name"] != nil {
label?.name = data["name"] as? String
}
if data["value"] != nil {
label?.value = data["value"] as? String
}
if data["var_name"] != nil {
label?.var_name = data["var_name"] as? String
}
return label!;
}
class func fetchLabelFromLabelUsingVarID (var_id:String,screen:String) -> AppLabels? {
let fetchrequest = NSFetchRequest<AppLabels>(entityName: "AppLabels")
fetchrequest.predicate = NSPredicate(format: "var_id == %@ && name == %@", var_id,screen);
fetchrequest.fetchLimit = 1;
do {
let fetchedResults = try CoreDataStack.managedObjectContext.fetch(fetchrequest)
if let applabel = fetchedResults.first {
return applabel
}
}
catch{
}
return nil;
}
+0
답안 코드에 대한 자세한 내용을 추가하면 문제 해결에 도움이되지 않습니다. – CodeChanger
관련 문제
- 1. 기존 데이터를 새 데이터로 바꿉니다.
- 2. 새 데이터를 기존 데이터로 파티셔닝
- 3. 데이터를 새로 삽입하고 목록보기
- 4. 데이터를 데이터베이스에 삽입하고 싶습니다.
- 5. CoreData 모듈에서 데이터를 가져옵니다
- 6. 데이터를 삽입하고 동시에 데이터를 쿼리하는 표준 프로토콜
- 7. 기존 netcdf 파일에 새 데이터를 추가하는 방법
- 8. mongo의 기존 컬렉션에 새 데이터를 추가하십시오.
- 9. 기존 열의 데이터를 기반으로 새 열 만들기
- 10. 기존 Hbase 데이터를 새 클러스터로 마이그레이션하는 방법
- 11. MySQL - 데이터를 삽입하고 테이블에서 선택하십시오.
- 12. mvc에서 동일한보기에 데이터를 삽입하고 표시하십시오.
- 13. AJAX : 데이터를 올바르게 삽입하고 있습니까?
- 14. ContentResolver가 중복 데이터를 삽입하고 있습니다.
- 15. 데이터베이스에 동시에 데이터를 삽입하고 업데이트하십시오.
- 16. 테이블에 반복 데이터를 삽입하고 연결하십시오.
- 17. 새 데이터를 테이블에 삽입하고 프로세스가 끝날 때까지 (예 : MySql)
- 18. 레코드 세트를 사용하여 데이터를 대량 삽입하고 새 ID를 빠르게 반환하십시오.
- 19. CoreData, PersistentStore, 데이터를 검색하지 않습니다.
- 20. 기존 데이터를 MonoTouch.Dialog에로드하기
- 21. 새 데이터를 tableView에 다시로드하십시오.
- 22. std :: map에 데이터를 삽입하고 vc6에서 std :: map의 데이터를 표시하는 방법
- 23. 데이터베이스에 데이터를 삽입하고 데이터베이스에서 데이터를 가져 오는 방법
- 24. symfony doctrine을 사용하여 데이터를 삽입하고 PHP를 사용하여 데이터를 검색합니다.
- 25. 데이터를 삽입하고 내가 데이터를 삽입하고 DB에서 AnswerId을 선택 할 수 있도록 고군분투
- 26. 기존 데이터를 기반으로 새로운 데이터를 동적으로 생성
- 27. GIT하고 기존 데이터를 무시하십시오.
- 28. MySQL에서 데이터를 삽입하고 가져 오는 안전한 방법
- 29. 치명적인 오류 동안 데이터베이스에 데이터를 삽입하고 때
- 30. 하나의 테이블에 데이터를 삽입하고 다른 테이블을 업데이트하십시오.
시도를 감사하고 고유 ID를 가진 기존 개체를 가져 당신에게
도움이 될; 객체를 얻지 못하면 새 객체를 삽입하십시오. – Paulw11
일반적으로 앱을 서버와 동기화하는 것이 좋습니다. 서버에서 오는 모든 것을 업데이트하십시오. – kirander
뭘 설명해 주시겠습니까? 덮어 쓰기를 원 하시겠습니까? 덮어 쓰지 않으려면이 링크 구현을 보시기 바랍니다. https://github.com/Gagan5278/DemoApps/blob/master/TwitterDemo/TwitterDemo/Model/TwitterUser%2BCoreDataClass.swift 이 코드에서 무시할 수있는 ' checkForObjectCountWithIdentifier '함수를 호출합니다. 또한 더 나은 성능을 위해 일괄 저장을 구현하십시오. –