gpt4 book ai didi

swift - 如何在后台获取tableview的数据?

转载 作者:行者123 更新时间:2023-11-30 10:19:24 24 4
gpt4 key购买 nike

我有一个后台任务(使用Parse.com API)来获取并计算表格 View 的数据:

 var usedMessages = [String]()
var currentMessages = [Message]()

func getCurrentMessages() {

if currentUser != nil {
var entryQuery = Entry.query()
entryQuery.whereKey("user", equalTo: currentUser)
entryQuery.whereKey("originatedFromType", equalTo: "message")
entryQuery.findObjectsInBackgroundWithBlock { (entryObjects: [AnyObject]!, getEntriesError: NSError!) -> Void in

for object in entryObjects {
var entry = object as Entry
usedMessages.append(entry.originatedFromId)
}

var messageQuery = Message.query()
messageQuery.whereKey("endDate", greaterThan:NSDate())
messageQuery.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
for object in objects {
var message = object as Message
if !contains(usedMessages, message.objectId) {
currentMessages.append(message)
}
}
self.tableview.reloadData()
}
}
}
}

这是处理获取 TableView 数据然后重新加载 TableView 数据的正确方法吗?或者我应该使用委托(delegate)来通知 TableView 数据已更改?或者甚至是 query.findObjectInBackgroundWithTarget 并发送结果?

最佳答案

您应该始终确保 reloadData 和任何UI 更新发生在主线程中。还要检查该方法是否不返回错误。

messageQuery.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in

if (error == nil)
{
//Your code.
dispatch_async(dispatch_get_main_queue(),{ () -> Void in
self.tableView.reloadData()
})
}
else
{
// Log the error
}
}

关于swift - 如何在后台获取tableview的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28008496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com