【发布时间】:2017-09-18 07:43:27
【问题描述】:
我有这段代码,可以保存从地图视图坐标中获取的纬度和经度。当应用程序启动时,我想检索这些坐标。我确实注意到,但是当我尝试检索它时,我得到了很多我想要的其他信息。
我使用这种方法检索它,并在控制台上打印它:
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "GeoData")
request.returnsObjectsAsFaults = false
do
{
let results = try context.fetch(request)
if results.count > 0 {
print(results)
}
}
catch
{
//ERROR
}
但是当我这样做时,我得到了这个:
[<GeoData: 0x6000002876c0> (entity: GeoData; id: 0xd0000000014c0000 <x-coredata://1BDB903D-6F82-404A-A381-832E7932F832/GeoData/p83> ; data: {
myLastLocation = nil;
myLatitude = "24.16935894001965";
myLongitude = "120.9677266312395";
})]
如何再次检索数据并获得 myLatitude 和 myLongitude 的实际值?
编辑:
我是这样保存的:
if longPress.state == .ended
{
let touchLocation = longPress.location(in: mapView)
let coordinate = mapView.convert(touchLocation, toCoordinateFrom: mapView)
let newLocation = NSEntityDescription.insertNewObject(forEntityName: "GeoData", into: context)
newLocation.setValue(coordinate.latitude as Double, forKey: "myLatitude")
newLocation.setValue(coordinate.longitude as Double, forKey: "myLongitude")
do
{
try context.save()
}
catch
{
//ERROR
}
}
【问题讨论】:
-
您是否尝试过使用 let results = try context.fetch(request) 作为
,然后使用 results.myLatitude 和 results.myLongitude?span> -
你的意思是 let results = try context.fetch(request) as!双倍的 ?它产生了“从 [Any] 转换为不相关的类型 'Double' 总是失败”
-
存储位置相关数据的模型类名称是什么?
-
我不确定模型类名称。我没有设置它,我想。我会以我保存的方式添加。
-
您还应该在问题中添加用于存储位置数据的代码。
标签: ios swift core-data core-location