gpt4 book ai didi

ios - 数组随着值的变化而更新

转载 作者:可可西里 更新时间:2023-11-01 02:18:33 28 4
gpt4 key购买 nike

我想弄清楚为什么我的数组会动态更新?

我有以下类(class)

class LocationData {
var address: String = ""
var city: String = ""
var deviceName: String = ""
var deviceId: String = ""
var state: String = ""
}

然后我有以下功能

func fetchLocationItems(sortByKey1: String, sortByKey2: String, deviceID: String, isAsecending: Bool) -> [LocationData]{

var locationObjectArray = [LocationData]()

var locationData = LocationData()
let context: NSManagedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
do {
let request = NSFetchRequest(entityName: "Location")
let sortDescriptor1 = NSSortDescriptor(key: sortByKey1, ascending: isAsecending)
let sortDescriptor2 = NSSortDescriptor(key: sortByKey2, ascending: isAsecending)
request.sortDescriptors = [sortDescriptor1, sortDescriptor2]
let results = try locationContext.executeFetchRequest(request)
var count = 0
if results.count > 0 {
for item in results as! [NSManagedObject] {
if item.valueForKey("deviceID") as! String == deviceID {
locationData.deviceId = item.valueForKey("deviceID") as! String
locationData.address = item.valueForKey("address") as! String
locationData.city = item.valueForKey("city") as! String
locationData.state = item.valueForKey("state") as! String
locationData.deviceName = item.valueForKey("deviceName") as! String
locationObjectArray.insert(locationData, atIndex: count)
count++
}
}
//try context.save()
}

} catch {
print("There was error getting data")
}
return locationObjectArray

}

所以我在 coredata 中有 4 条记录。第一次通过“for item 循环”,locationDate 被插入到 locationObjectArry

第二次通过循环,索引 0 处的 locationObjectArray 中的值更新为例如的新值

locationData.deviceId  = item.valueForKey("deviceID")  as! String  
locationData.address = item.valueForKey("address") as! String

等等。

所以在循环结束时,locationObjectArray[0..4]的值都与最后一条记录相同。

知道可能是什么问题吗?

最佳答案

因为你的对象在每个循环中都不是 init new 的。所以对象还是一样的

尝试:

for item in results as! [NSManagedObject] {
if item.valueForKey("deviceID") as! String == deviceID {
// init new LocationData
var locationData = LocationData()
locationData.deviceId = item.valueForKey("deviceID") as! String
locationData.address = item.valueForKey("address") as! String
locationData.city = item.valueForKey("city") as! String
locationData.state = item.valueForKey("state") as! String
locationData.deviceName = item.valueForKey("deviceName") as! String
locationObjectArray.insert(locationData, atIndex: count)
count++
}
}

关于ios - 数组随着值的变化而更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33817709/

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