我有一个函数可以连接到我的解析数据库并遍历所有用户对象并将他们的姓名和电子邮件附加到每个类别的字符串数组中。
当我调试它时,它显示数组在 viewWillAppear 函数期间具有正确的值,但是当归结为返回数组中的行数时,由于某种原因它们是空的。
知道是什么原因造成的吗?
这是我的代码
import UIKit
import Parse
class ContactTableViewController: UITableViewController {
//arrays to hold user's name and email
var users_names = [String]()
var users_emails = [String]()
override func viewWillAppear(animated: Bool){
//Load user email and name
let query: PFQuery = PFUser.query()!
query.findObjectsInBackgroundWithBlock {
(objects:[PFObject]?, error:NSError?) -> Void in
if error == nil {
// The find succeeded.
print("Successfully retrieved \(objects!.count) users.")
// Do something with the found objects
if let user_objects = objects {
for user in user_objects {
self.users_names.append(user.valueForKey("name") as! String)
self.users_emails.append(user.valueForKey("email") as! String)
}
}
} else {
// Log details of the failure
print("Error: \(error!) \(error!.userInfo)")
}
self.users_names.removeAtIndex(1)
self.users_emails.removeAtIndex(1)
self.tableView.reloadData()
}
}
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor(red: 0.8353, green: 0.9098, blue: 0.902, alpha: 1.0)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
//return number of rows in table
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return users_names.count
}
问题是在 viewWillAppear() 运行并将数据提取到数组之前,cellForRowAtIndexPath 正在运行并填充表。
我试过在 viewWillAppear 的开头添加这个
UIApplication.sharedApplication().beginIgnoringInteractionEvents()
然后 .endIgnoringInteractionEvents() 在 viewWillAppear 的末尾,但这也没有解决它。
最佳答案
您正在从您的 block 中调用 self.tableView.reloadData()
,该 block 在后台线程上运行。所有与 UI 相关的操作都必须在主线程上运行。尝试像这样包装调用以重新加载:
self.users_names.removeAtIndex(1)
self.users_emails.removeAtIndex(1)
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
关于arrays - Swift 字符串数组一直显示为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37081262/