我正在构建一个应用程序,当服务器连接不再可用时,它会在核心数据中存储位置,然后在恢复连接时将这些位置推送到服务器。
从核心数据中获取并打印这些获取的对象后,我最初会遇到大量故障。我理解故障及其代表的内容,但故障的数量不应该是相同数量的对象吗?故障数量大大超过了对象的数量(我只能为{经度,纬度,时间戳}的10个位置实体数组对象打印出100多个故障。)
我希望有人能告诉我我做错了什么,或者这是不正常的行为。非常感谢。
AppDelegate.swift 当服务器返回到连接的
时,调用fetch并打印核心数据对象 var fetchedCoreData = self.coreDataManagement.fetchLog()
for dataPoints in fetchedCoreData
{
println(dataPoints)
}
`CoreDataManager.swift处理存储/获取Location实体的核心数据
var locations = [NSManagedObject]()
//coordinates passed from AppDelegate
func saveCoords(latCoord: String, longCoord: String, timeCoord: String) {
let appDelegate =
UIApplication.sharedApplication().delegate as AppDelegate
let managedContext = appDelegate.managedObjectContext!
let entity = NSEntityDescription.entityForName("Location",
inManagedObjectContext:
managedContext)
let coordsInfo = NSManagedObject(entity: entity!,
insertIntoManagedObjectContext:managedContext)
coordsInfo.setValue(latCoord, forKey: "latitude")
coordsInfo.setValue(longCoord, forKey: "longitude")
coordsInfo.setValue(timeCoord, forKey: "timestamp")
var error: NSError?
if !managedContext.save(&error) {
println("Could not save \(error), \(error?.userInfo)")
}
locations.append(coordsInfo)
}
`
//fetch core data objects
func fetchLog() -> Array<AnyObject> {
let appDelegate =
UIApplication.sharedApplication().delegate as AppDelegate
let fetchRequest = NSFetchRequest(entityName: "Location")
fetchRequest.returnsObjectsAsFaults = false;
var fetchResults = appDelegate.managedObjectContext!.executeFetchRequest(fetchRequest, error: nil)
return fetchResults! as Array<AnyObject>
}
`