更新 NSManagedObjects 数组
Update an Array of NSManagedObjects
我正在使用 CoreData 和 swift 并尝试更新 NSManagedObjects 数组。但是,当我尝试时收到 "Value of type '[NSManagedObject]' has no member 'setValue'"
在上下文中更新记录中的两个键。
我正在使用以下代码行来执行更新:
"erManagedObject.setValue([(true, forKey: "aKey"),(false, forKey: "anotherKey")])"
public func updateRecordsForEntityManagedObject(_ entity: String, erManagedObject: [NSManagedObject]){
// Create the Fetch Request
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: entity)
let recordCount = erManagedObject.count
print(" Total Records: \(recordCount)")
for i in 1...recordCount {
// I receive the error here
erManagedObject.setValue([(true, forKey: "aKey"),(DateUtilities().getTimestamp(), forKey: "timeStampKey")])
}
非常感谢任何帮助!
erManagedObject 是一个 NSManagedObject 数组。 (更新)——你错误地使用了 setValue 方法,它不应该接受一个数组。查看文档
https://developer.apple.com/documentation/coredata/nsmanagedobject/1506397-setvalue
我觉得你想做
erManagedObject[i].setValue...
注意:您的 for 循环将崩溃,因为您的数组将越界..您的 for 循环应从 0 开始迭代..< erManagedObjects.count
for i in 0 ..< recordCount {
erManagedObject[i].setValue...
}
或者...
for managedObject in erManagedObject {
managedObject.setValue...
}
替换
for i in 1...recordCount {
// I receive the error here
erManagedObject.setValue([(true, forKey: "aKey"),(false, forKey: "anotherKey")])
}
有
erManagedObject.forEach {
[=11=].setValue(true, forKey: "aKey")
[=11=].setValue(false, forKey: "anotherKey")
}
因为你应该使用循环项 setValue
而不是数组本身
let request = NSFetchRequest<NSFetchRequestResult>(entityName:entity)
do {
let result = try context.fetch(request) as! [ModelName]
result.forEach {
[=12=].someKey = ""
}
// save context here
}
catch {
print(error)
}
我正在使用 CoreData 和 swift 并尝试更新 NSManagedObjects 数组。但是,当我尝试时收到 "Value of type '[NSManagedObject]' has no member 'setValue'" 在上下文中更新记录中的两个键。 我正在使用以下代码行来执行更新: "erManagedObject.setValue([(true, forKey: "aKey"),(false, forKey: "anotherKey")])"
public func updateRecordsForEntityManagedObject(_ entity: String, erManagedObject: [NSManagedObject]){
// Create the Fetch Request
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: entity)
let recordCount = erManagedObject.count
print(" Total Records: \(recordCount)")
for i in 1...recordCount {
// I receive the error here
erManagedObject.setValue([(true, forKey: "aKey"),(DateUtilities().getTimestamp(), forKey: "timeStampKey")])
}
非常感谢任何帮助!
erManagedObject 是一个 NSManagedObject 数组。 (更新)——你错误地使用了 setValue 方法,它不应该接受一个数组。查看文档
https://developer.apple.com/documentation/coredata/nsmanagedobject/1506397-setvalue
我觉得你想做
erManagedObject[i].setValue...
注意:您的 for 循环将崩溃,因为您的数组将越界..您的 for 循环应从 0 开始迭代..< erManagedObjects.count
for i in 0 ..< recordCount {
erManagedObject[i].setValue...
}
或者...
for managedObject in erManagedObject {
managedObject.setValue...
}
替换
for i in 1...recordCount {
// I receive the error here
erManagedObject.setValue([(true, forKey: "aKey"),(false, forKey: "anotherKey")])
}
有
erManagedObject.forEach {
[=11=].setValue(true, forKey: "aKey")
[=11=].setValue(false, forKey: "anotherKey")
}
因为你应该使用循环项 setValue
而不是数组本身
let request = NSFetchRequest<NSFetchRequestResult>(entityName:entity)
do {
let result = try context.fetch(request) as! [ModelName]
result.forEach {
[=12=].someKey = ""
}
// save context here
}
catch {
print(error)
}