gpt4 book ai didi

ios - 使用 Swift 更新实体记录而不是使用 CoreData 创建新记录

转载 作者:行者123 更新时间:2023-11-30 12:25:40 28 4
gpt4 key购买 nike

我需要从服务器获取一些信息。
然后我需要使用 CoreData 保存它们。
问题是具有相同属性的相同记录被保存多次。
我只想将新记录保存到 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 是否已保存。如果之前保存过,我就不应该添加其他记录。那么如何更新现有的呢?这是解决这个问题的好方法吗?

最佳答案

首先检查数据库中是否存在您的记录

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

关于ios - 使用 Swift 更新实体记录而不是使用 CoreData 创建新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44255001/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com