Ios Swift Parse-本地数据存储项未出现在tableView中

Ios Swift Parse-本地数据存储项未出现在tableView中,ios,swift,parse-platform,local-datastore,Ios,Swift,Parse Platform,Local Datastore,这是我昨天提问的后续内容 我已经使用parse成功地将和对象保存在本地数据存储中,并尝试将该对象添加到数组中以存储它们,以便在表视图中显示内容。查询运行正常,但在我看来,数组中没有追加任何内容,因此表视图中没有显示任何内容。这是我的密码 localData.swift文件 import Foundation struct localData { var date: String! var latt: NSNumber! var lattDelta: NSNumber! var locality

这是我昨天提问的后续内容

我已经使用parse成功地将和对象保存在本地数据存储中,并尝试将该对象添加到数组中以存储它们,以便在表视图中显示内容。查询运行正常,但在我看来,数组中没有追加任何内容,因此表视图中没有显示任何内容。这是我的密码

localData.swift文件

import Foundation

struct localData {
var date: String!
var latt: NSNumber!
var lattDelta: NSNumber!
var locality: String!
var longi: NSNumber!
var longiDelta: NSNumber!
var name: String!
var note: String!
}
然后,我在全球宣布:

var arrayToPopulateCells = [localData]()
这是我的解析查询:

func performQuery() {
    let query = PFQuery(className: "ParseLighthouse")

    query.fromLocalDatastore()
    query.whereKey("User", equalTo: PFUser.currentUser()!)
    query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
        if error == nil {
            // The find succeeded.
            println("Successfully retrieved \(objects!.count) lighthouses.")
            // Do something with the found objects
            if let light = objects as? [PFObject] {
                for object in light {
//                        println(object.objectId)
//                        println(object.objectForKey("Name"))
//                        println(object.objectForKey("Locality"))
                    var singleData = localData()
                    singleData.name = object["Name"] as! String
                    singleData.note = object["Note"] as! String
                    singleData.date = object["Date"] as! String
                    singleData.latt = object["Latt"] as! NSNumber
                    singleData.longi = object["Longi"] as! NSNumber
                    singleData.lattDelta = object["LattDelta"] as! NSNumber
                    singleData.longiDelta = object["LongiDelta"] as! NSNumber
                    singleData.locality = object["Locality"] as! String


                    self.arrayToPopulateCells.append(singleData)



                }
            }
        } else {
            // Log details of the failure
            println("Error: \(error!) \(error!.userInfo!)")
        }
    }
}
在我的表格代码中:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return arrayToPopulateCells.count
}

因此,我不确定我做错了什么,但似乎查询正在工作,但数组中没有任何内容。有什么想法吗


我想指出的是,解析对象是在viewcontroller 2上创建的,查询是在viewcontroller 1上运行的,表视图位于其中。这有区别吗?我是否应该在同一个控制器上创建对象后立即运行查询并尝试追加?

我认为您的问题是需要调用

self.tableView.reloadData

灯光{循环中对象的外部

我认为您的数据正在添加到数组中,好的,只是表视图需要知道它何时完成

编辑***

func performQuery() {
let query = PFQuery(className: "ParseLighthouse")

query.fromLocalDatastore()
query.whereKey("User", equalTo: PFUser.currentUser()!)
query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
    if error == nil {
        // The find succeeded.
        println("Successfully retrieved \(objects!.count) lighthouses.")
        // Do something with the found objects
        if let light = objects as? [PFObject] {
            for object in light {
                var singleData = localData()
                singleData.name = object["Name"] as! String
                singleData.note = object["Note"] as! String
                singleData.date = object["Date"] as! String
                singleData.latt = object["Latt"] as! NSNumber
                singleData.longi = object["Longi"] as! NSNumber
                singleData.lattDelta = object["LattDelta"] as! NSNumber
                singleData.longiDelta = object["LongiDelta"] as! NSNumber
                singleData.locality = object["Locality"] as! String
                self.arrayToPopulateCells.append(singleData)
            }
            self.tableView.reloadData()
        }
    } else {
        // Log details of the failure
        println("Error: \(error!) \(error!.userInfo!)")
    }
}
}

好的,我让它工作了,但是有一个奇怪的错误。我运行了performQuery函数和viewwilldisease方法中的self.tableView.reloadData。我的应用程序的第一个屏幕是应该显示此信息的表视图。当应用程序第一次启动时,表视图是空的。如果我转到应用程序中的另一个页面并返回,表视图会很受欢迎但是现在如果我离开那个页面,回到表视图,它会再次更新,并且有重复项,每次我回来,每个项目都会有一个重复项。你知道如何解决这个问题吗?你为什么要在ViewWillDisplay方法中应用self.tableView.reloadData?只要用我使用的performQuery方法替换你的performQuery方法就可以了已添加我编辑的答案。运行查询后,应填充表。
func performQuery() {
let query = PFQuery(className: "ParseLighthouse")

query.fromLocalDatastore()
query.whereKey("User", equalTo: PFUser.currentUser()!)
query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
    if error == nil {
        // The find succeeded.
        println("Successfully retrieved \(objects!.count) lighthouses.")
        // Do something with the found objects
        if let light = objects as? [PFObject] {
            for object in light {
                var singleData = localData()
                singleData.name = object["Name"] as! String
                singleData.note = object["Note"] as! String
                singleData.date = object["Date"] as! String
                singleData.latt = object["Latt"] as! NSNumber
                singleData.longi = object["Longi"] as! NSNumber
                singleData.lattDelta = object["LattDelta"] as! NSNumber
                singleData.longiDelta = object["LongiDelta"] as! NSNumber
                singleData.locality = object["Locality"] as! String
                self.arrayToPopulateCells.append(singleData)
            }
            self.tableView.reloadData()
        }
    } else {
        // Log details of the failure
        println("Error: \(error!) \(error!.userInfo!)")
    }
}
}