我是 Swift 语言的新手。我创建了一个 MapKit 应用程序,它以MKPointAnnotation
递归方式从 Sqlite DB(最新的 FMDB 堆栈)中检索数据(纬度、日志和标题)。
目的是把一堆兴趣点放在一个MKMapViewDelegate
. 我试过不带数组,但会mapView.addAnnotation
覆盖任何点并且只显示地图上的最后一个点,所以我正在尝试使用数组。
我已经创建了一个函数,但是当调用 wpoint 数组时,我在运行时收到错误“致命错误:无法索引空缓冲区”。
这是代码:
func initializeRoute()
{
sharedInstance.database!.open()
var resultSet: FMResultSet! = sharedInstance.database!.executeQuery("SELECT * FROM Route", withArgumentsInArray: nil)
// DB Structure
var DBorder: String = "order" // Int and Primary Index
var DBlatitude: String = "latitude" // Float
var DBlongitude: String = "longitude" // Float
// Array declaration
var wpoint: [MKPointAnnotation] = []
// Loop counter init
var counter: Int = 0
if (resultSet != nil) {
while resultSet.next() {
counter = counter + 1
wpoint[counter].coordinate = CLLocationCoordinate2DMake(
(resultSet.stringForColumn(String(DBlatitude)) as NSString).doubleValue,
(resultSet.stringForColumn(String(DBlongitude)) as NSString).doubleValue
)
wpoint[counter].title = resultSet.stringForColumn(DBorder)
mapView.addAnnotation(wpoint[counter])
}
}
sharedInstance.database!.close()
}
println ("Coordinate = \(wpoint.coordinate)")
显示所有数据,我在数组声明中弄乱了一些东西......