我在从核心数据加载信息(位置)时遇到问题,我的核心数据[商店]有列纬度(纬度)和长度(经度)。但是无法将其加载到MapView。
import UIKit
import MapKit
import CoreData
class allMapPinsViewController: UIViewController, MKMapViewDelegate {
var shop: [Shops]! = []
var appDelegate: AppDelegate!
var sharedContext: NSManagedObjectContext!
@IBOutlet weak var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
sharedContext = appDelegate.managedObjectContext
mapView.delegate = self
self.mapView.addAnnotations(fetchAllPins())
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func fetchAllPins() -> [Shops]? {
do {
let fetchRequest = NSFetchRequest (entityName: "Shops")
let results = try sharedContext.executeFetchRequest(fetchRequest) as! [Shops]
return results
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}
答案 0 :(得分:1)
addAnnotations(:)
方法接受一个参数,该参数是MKAnnotation
的数组。你没有传递它......没有,因为allPins
没有返回值。您需要更改allPins()
,以便返回MKAnnotation
数组。
要使allPins()
这样做,您需要为每个纬度/长度对构造MKAnnotation
,将其添加到数组,并在函数末尾返回数组。 MKAnnotation
是一个协议,因此您无法直接实例化它。您需要拥有一些采用MKAnnotation
的类,创建其实例,并将这些实例添加到数组中。