使用Swift更新实体记录而不是使用CoreData创建新记录
问题描述:
我需要从服务器获取一些信息。
然后我需要使用CoreData保存它们。
问题是具有相同属性的相同记录多次保存。
我想将新记录保存到CoreData并更新现有的记录。
使用Swift更新实体记录而不是使用CoreData创建新记录
func saveChanges() throws {
var error: ErrorType?
mainQueueContext.performBlockAndWait() {
if self.mainQueueContext.hasChanges {
do {
try self.mainQueueContext.save()
} catch let saveError {
error = saveError
}
}
}
if let error = error {
throw error
}
}
func fetchRecentPosts(completion completion: (PostResult) -> Void){
.
.
.
do{
try self.coreDataStack.saveChanges()
print("now data is saved in this device")
}
catch let error {
result = .Failure(error)
}
.
.
.
}
我的想法是,以检查是否是id
得救了。如果在我不应该添加另一条记录之前保存它。那我该如何更新现有的? 这是解决这个问题的好方法吗?如果你的纪录DB
static func getMyRecord(with id : String, context : NSManagedObjectContext) -> MyRecord? {
let fetchRequest: NSFetchRequest< MyRecord> = MyRecord.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "id = %@", id)
let foundRecordsArray = try! context.fetch(fetchRequest)
if foundRecordsArray.count > 0 {
return foundRecordsArray[0]
}
return nil
}
存在
答
首先检查虽然插入如果有更新它在其他创造新的纪录。
static func insertRecord(_ record : MyRecord, context : NSManagaedObjectContext) {
let foundRecord = DataInserterClass. getMyRecord(with: yourID, context: context)
if foundRecord == nil {
//create new record
}
else {
//update foundRecord
}
try! context.save()
}
https://*.com/a/38459233/5461400 @آژانسکتاب –