Core data swift3中的核心数据条目未正确更新
我有一个核心数据条目,其中包含从API获取的数据库中存储的某些键和值。现在我想用更新后的值更新一些核心数据条目,因此我使用以下代码:Core data swift3中的核心数据条目未正确更新,core-data,swift3,xcode8,Core Data,Swift3,Xcode8,我有一个核心数据条目,其中包含从API获取的数据库中存储的某些键和值。现在我想用更新后的值更新一些核心数据条目,因此我使用以下代码: func updateAllRecords(responseArray: [Dictionary<String, String>]) { for settingsObject in responseArray { if #available(iOS 10.0, *) { let keys = settingsObje
func updateAllRecords(responseArray: [Dictionary<String, String>]) {
for settingsObject in responseArray {
if #available(iOS 10.0, *) {
let keys = settingsObject.flatMap() { $0.0 as? String }
let values = settingsObject.flatMap(){ $0.1 as? String}
let request = NSFetchRequest<ApplicationSettings>(entityName: "ApplicationSettings")
do {
let context = persistentContainer.viewContext
let searchResults = try context.fetch(request)
for settingsKeys in searchResults {
if keys.contains(settingsKeys.key!) {
settingsKeys.value = values[1]
try context.save()
}
}
} catch {
print ("There was an error")
}
} else {
}
}
}
}
我从viewcontroller调用此函数,如下所示:
var dicArray = [Dictionary<String, String>]()
let dic1 = ["IS_CIVIL_ID_MANDATORY": "Smith", "TIME_IN_MIN_BEFORE_ENABLING_START_TRIP": "Robert"]
dicArray.append(dic1)
CoreDataHandler.sharedInstance.updateAllRecords(responseArray: dicArray)
但是表中的条目没有正确更新键。它为两个键存储相同的值。见下文:
我在这个代码中哪里错了?为什么为键存储相同的值?您在这里犯了错误
settingsKeys.value=值[1]这里1是静态的 我认为您不需要单独的数组值 用我的代码替换这个代码
for settingsKeys in searchResults {
if keys.contains(settingsKeys.key!)
{
settingsKeys.updateValue(settingObject[settingsKeys.key!], forKey:settingsKeys.key!)
try context.save()
}
}
}
例如演示
func updateAllRecords(responseArray: [Dictionary<String, String>])
{
for settingsObject in responseArray
{
var dic2 = ["IS_CIVIL_ID_MANDATORY": "xyz", "TIME_IN_MIN_BEFORE_ENABLING_START_TRIP": "xyz"]
let keys = settingsObject.flatMap() {$0.0}
let values = settingsObject.flatMap(){$0.1}
let settingKeys = dic2.flatMap() {$0.0}
for settingsKey in settingKeys
{
dic2.updateValue(settingsObject[settingsKey]!, forKey: settingsKey)
}
print(keys)
print(dic2)
}
}
var dicArray = [Dictionary<String, String>]()
let dic1 = ["IS_CIVIL_ID_MANDATORY": "Smith", "TIME_IN_MIN_BEFORE_ENABLING_START_TRIP": "Robert"]
dicArray.append(dic1)
updateAllRecords(responseArray: dicArray)
输出
[启用开始行程前的时间(分钟):Robert,是否强制使用CIVIL ID:Smith]settingsKeys.value=values[1]它是静态替换值[1]使用您的值Hello@Chelsea在我的回答中有任何疑问吗?@ChelseaShawra我已经为其创建了演示,检查xyz是否替换为相应的值您还可以使用此设置skeys.value=settingsObject[settingsKeys.key!]更改您的行!好的,如果[Dictionary]被替换为字典数组,那么我能做什么?对不起,我不明白,您能用您想要更新的内容、输入数据和预期输出更新问题吗