【发布时间】:2015-11-20 01:55:29
【问题描述】:
我想弄清楚为什么我的数组会动态更新?
我有以下课程
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 中
第二次通过循环,locationObjectArray 中索引 0 处的值将更新为 example 的新值
locationData.deviceId = item.valueForKey("deviceID") as! String
locationData.address = item.valueForKey("address") as! String
等等。
所以在循环结束时,locationObjectArray[0..4]的值都和最后一条记录一样。
知道可能是什么问题吗?
【问题讨论】:
标签: ios arrays swift core-data