Ios Swift Parse-本地数据存储项未出现在tableView中
这是我昨天提问的后续内容 我已经使用parse成功地将和对象保存在本地数据存储中,并尝试将该对象添加到数组中以存储它们,以便在表视图中显示内容。查询运行正常,但在我看来,数组中没有追加任何内容,因此表视图中没有显示任何内容。这是我的密码 localData.swift文件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
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!)")
}
}
}