0
我正在从正在返回消息对象的后端服务中获取数据,并且想要在表视图中显示消息。我遇到的问题是重新加载视图和数据到达之间的延迟。目前只要用户滚动表格视图就会显示消息。在表视图中显示来自后端服务的数据
override func viewDidLoad() {
super.viewDidLoad()
print("Message view did load")
username = preferences.valueForKey("username") as! String
userID = preferences.valueForKey("userID") as! String
// Do any additional setup after loading the view.
self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None
self.tableView.rowHeight = UITableViewAutomaticDimension
getUser()
}
func getUser(){
let currentUserAccessToken = EVUser.currentUser().accessToken
EVUser.fetchWithAccessToken(currentUserAccessToken, block: { (loggedInUser:EVUser!, error:NSError!) -> Void in
if (error == nil) {
self.user = loggedInUser
self.getMessages()
print("The user " + loggedInUser.username + " is logged in with valid access token.")
} else {
print("The user is not logged in: " + error.domain)
}
})
}
func getMessages(){
let dataStore: EVDataStore = EVDataStore.sharedInstance() as! EVDataStore
//Filter item
let request:EVFetchRequest = EVFetchRequest(kindOfClass: Message.self)
request.predicate = NSPredicate(
format: "CreatedByName == %@ OR (To == %@ AND CreatedByName == %@)",
username,
userID,
"Admin"
)
dataStore.executeFetchRequest(request, block: { (result, error) -> Void in
if error == nil{
if result?.count > 0 {
for item in result{
print (item)
self.globalMessages.append(item as! Message)
}
self.displayMessages(self.globalMessages)
}else{
print("No items found")
}
}else{
print("Error: \(error)")
}
})
}
func displayMessages(messages:[Message]){
setupTableView()
}
func setupTableView(){
self.tableView.delegate = self;
self.tableView.dataSource = self;
}
是否有一种方法可以在消息一到达时将消息添加到表视图中?
我不知道我的理解是否正确,但也许调用tableView.reloadData()解决了你的问题。 – ammerzon
@ammerzon谢谢你的诀窍 – Lonergan6275
我会写一个答案,以便您可以将其标记为正确 – ammerzon