因此,在学习“快速”的同时,我遇到了向数组属性添加值的问题。当我试图在数组中添加一个值后打印第一个值时,我会收到一个超出界限的索引错误。如何向整个类可访问的数组属性添加值?
class HomeViewController: UIViewController {
var geofences = [Geofence]()
override func viewDidLoad() {
super.viewDidLoad()
getFences()
print(self.geofences[0])
}
func getFences() {
var query = PFQuery(className:"Geofence")
query.whereKey("username", equalTo: "Peter")
query.findObjectsInBackgroundWithBlock {
(fences: [PFObject]?, error: NSError?) -> Void in
if error == nil && fences != nil {
if let fences = fences {
for (index, element) in fences.enumerate() {
var unique_id = element.objectId
var fence_radius = element["radius"] as! Int
var fence_name = element["name"] as! String
var lat = element["centerPoint"].latitude
var lon = element["centerPoint"].longitude
var center = CLLocationCoordinate2D(latitude: lat, longitude: lon)
var new_fence: Geofence? = Geofence(uniqueID: unique_id!, radius: fence_radius, centerPoint: center, name: fence_name)
self.geofences.append(new_fence!)
}
}
} else {
print(error)
}
}
}编辑:看来我把这个问题简单化了。下面是使索引超出界限错误的代码。当我从Parse检索geofence时,geofence数组将被填充,但是一旦它退出getFences方法,数组就会被清空。
发布于 2015-12-18 19:58:15
在getFences()有时间填充数组之前,您的打印调用很可能正在运行。您可以使用query.findObjectsInBackgroundWithBlock之外的另一个打印调用来检查这一点。
https://stackoverflow.com/questions/34362447
复制相似问题