从 Core Data 创建一个 CLLocation 坐标数组

Ada*_*son 1 arrays core-data cllocation swift

也许我找不到这个问题的答案,因为它非常简单,我应该能够弄清楚,但我很难过。哦,如果我的一些术语被关闭,我很抱歉 - 我还在学习。

我正在使用 Swift 并且有一个从 Core Data 派生的数组。到现在为止还挺好。此数组中的两个元素是存储纬度和经度的 Doubles/NSNumbers。我将使用这两个元素在地图上绘制,但我不知道如何将这两个元素放入它们自己的 CLLocations 数组中。

所以,我在 Core Data 中得到了所有数据的数组:

var locationsList: [Locations] = []

 var context = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!
    var request = NSFetchRequest(entityName: "Locations")
    let pred = NSPredicate(format: "game = %d", passedGameNumber)
    request.predicate = pred
    request.sortDescriptors = [NSSortDescriptor(key:"time", ascending: false)]
    self.locationsList = context.executeFetchRequest(requestMap, error: nil)! as [Locations]
Run Code Online (Sandbox Code Playgroud)

但它保存了 Core Data 中所有内容的数据(按游戏过滤):

class Locations: NSManagedObject {

@NSManaged var game: NSNumber
@NSManaged var time: NSDate
@NSManaged var latitude: NSNumber
@NSManaged var longitude: NSNumber

}
Run Code Online (Sandbox Code Playgroud)

而且我只需要一个包含纬度和经度的数组,我需要将其转换为 CLLocation 以放置在地图上。我应该弄清楚地图部分 - 正是这个数组让我摸不着头脑!谢谢。

Ada*_*son 5

弄清楚了。在用于迭代 Core Data 数组的 for 循环之上,我还必须将我的纬度和经度转换为双精度数,然后再将它们作为 CLLocationCoordinate2D 附加到我的新数组中。

var coordinates: [CLLocationCoordinate2D] = []

for index in 0..<self.locationsList.count{
        var lat = Double(self.locationsList[index].latitude)
        var long = Double(self.locationsList[index].longitude)
        var coordinatesToAppend = CLLocationCoordinate2D(latitude: lat, longitude: long)
        coordinates.append(coordinatesToAppend)
    }
Run Code Online (Sandbox Code Playgroud)