首页
学习
活动
专区
圈层
工具
发布

Swift特性
EN

Stack Overflow用户
提问于 2015-12-18 19:13:14
回答 1查看 123关注 0票数 2

因此,在学习“快速”的同时,我遇到了向数组属性添加值的问题。当我试图在数组中添加一个值后打印第一个值时,我会收到一个超出界限的索引错误。如何向整个类可访问的数组属性添加值?

代码语言:javascript
复制
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方法,数组就会被清空。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-18 19:58:15

getFences()有时间填充数组之前,您的打印调用很可能正在运行。您可以使用query.findObjectsInBackgroundWithBlock之外的另一个打印调用来检查这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34362447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档