gpt4 book ai didi

arrays - 为什么我的数组在加载后会变空?

转载 作者:行者123 更新时间:2023-11-28 12:20:11 25 4
gpt4 key购买 nike

我一定是遗漏了一些基本的东西,但我似乎无法加载我的数组。它加载成功,但当它出现在另一个函数中时却变成空的。

我的目标是从位置数组中随机选择一个城市。 map View 加载了我的所有注释,但是当我在注释出现后调用 pickRandomNumber() 时我的位置数组被清空。

谢谢,

伊莱

这是我的代码:

import UIKit
import Mapbox
import GameplayKit

class ViewController: UIViewController, MGLMapViewDelegate {

var playerAnswer = ""
var number = Int()
var locations:[(number: Int, title: String, latitude:Double, Longitude:Double)] = []
var question = ""
var theCount = Int()
var randomNumber = Int()
var mapView = MGLMapView()


override func viewDidLoad() {
super.viewDidLoad()

mapView = MGLMapView(frame: view.bounds)

mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

// Set the map’s center coordinate and zoom level.
mapView.setCenter(CLLocationCoordinate2D(latitude: 40.7326808, longitude: -73.9843407), zoomLevel: 1, animated: true)
view.addSubview(mapView)



mapView.allowsZooming = true

let center = CLLocationCoordinate2D(latitude: 38.894368, longitude: -77.036487)
mapView.setCenter(center, zoomLevel: 7, animated: true)

// Set the delegate property of our map view to `self` after instantiating it.
mapView.delegate = self as! MGLMapViewDelegate

loadArray()

}


func loadArray() {
var locations = [
[number:0, "title": "Washington DC, USA", "latitude": 38.90, "longitude": -77.04],
[number:1,"title": "Ottawa, Canada", "latitude": 45.41, "longitude": -75.70],
[number:2,"title": "Mexico City, Mexico", "latitude": 19.43, "longitude": -99.13],
[number:3,"title": "Tegucigalpa, Honduras", "latitude": 14.08, "longitude": -87.21],
[number:4,"title": "San Salvador, El Salvador", "latitude": 13.69, "longitude": -89.19],
[number:5,"title": "Managua, Nicaragua", "latitude": 12.13, "longitude": -86.25],
[number:6,"title": "Belmopan, Belize", "latitude": 14.64, "longitude": -90.51],
[number:7,"title": "Panama City, Panama", "latitude": 8.99, "longitude": -79.52],
[number:8,"title": "Havana, Cuba", "latitude": 23.13, "longitude": -82.38],
[number:9,"title": "Caracas, Venezuela", "latitude": 10.49, "longitude": -66.88],
[number:10,"title": "Bogotá, Colombia", "latitude": 4.61, "longitude": -74.08],
[number:11,"title": "Lima, Peru", "latitude": -12.04, "longitude": -77.03]

]

for location in locations {
let annotation = MGLPointAnnotation()
annotation.title = location["title"] as? String
annotation.coordinate = CLLocationCoordinate2D(latitude: location["latitude"] as! Double, longitude: location["longitude"] as! Double)
mapView.addAnnotation(annotation)
}


print ("Current count for locations is \(locations.count)") // count is 12

}

func pickRandomNumber() {

print ("The array count is \(locations.count)") // count is 0
randomNumber = GKARC4RandomSource().nextInt(upperBound: locations.count)
print (randomNumber) // randomNumber is always 0

}


// Use the default marker. See also: our view annotation or custom marker examples.
func mapView(_ mapView: MGLMapView, viewFor annotation: MGLAnnotation) -> MGLAnnotationView? {

return nil
}

// Allow callout view to appear when an annotation is tapped.
func mapView(_ mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool {
playerAnswer = annotation.title as! String
print ("The player pressed \(playerAnswer)")
pickRandomNumber()
return true
}

最佳答案

func loadArray() {
var locations = [

您正在创建局部变量 locations,而不是将数据设置到类变量。简而言之:删除 var

关于arrays - 为什么我的数组在加载后会变空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45134519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com