也许我找不到这个问题的答案,因为它很简单,我应该可以弄清楚,但是我很沮丧。哦,抱歉,如果我的某些术语不正确-我仍在学习。
我正在使用 Swift,并且有一个从 Core Data 派生的数组。到现在为止还挺好。此数组中的两个元素是 Doubles/NSNumbers 存储纬度和经度。我将使用这两个元素绘制地图,但无法弄清楚如何将这两个元素放入自己的 CLLocations 数组中。
因此,我在核心数据中得到了所有数据的数组:
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]
但是它保留了核心数据中的所有数据(按游戏过滤):
class Locations: NSManagedObject {
@NSManaged var game: NSNumber
@NSManaged var time: NSDate
@NSManaged var latitude: NSNumber
@NSManaged var longitude: NSNumber
}
而且我只需要一个包含纬度和经度的数组,我将需要将其转换为 CLLocation 以放置在地图上。我应该弄清楚地图部分-正是这个数组让我挠头!谢谢。
3 回答
弄清楚了。在用于循环访问 Core Data 数组的 for 循环之上,我还必须将纬度和经度转换为 Doubles,然后再将其作为 CLLocationCoordinate2D 附加到新数组中。
好的解决方案 Adam...I 可以执行类似的操作。
声明这些全局变量
进行扩展以轻松访问作为 Double 的 CLLoationDegrees 类型
这就是您要附加坐标的方式
您不需要使用 NSNumber 来存储纬度和经度点。您可以将 CLLocation 直接存储到核心数据中。
为每个 CLLocation 设置一个实体,无论使用位置点的实体是哪种 too-many 关系。我们将此称为 LocationPoint:
然后,在 Xcode 数据模型中将 location 属性设置为可转换。而已!
在 Objective-c 中,您实际上仍然可以将此 LocationPoint 属性声明为 CLLocation,而不会出现任何错误: