gpt4 book ai didi

ios - 我什么时候应该重新加载数据()?

转载 作者:行者123 更新时间:2023-11-29 02:21:04 27 4
gpt4 key购买 nike

我正在将现有应用程序切换到 MVC 架构。我有一个处理数据建模的搜索类,其中包含以下函数:

     func performSearch(searchTerm: String){
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(urlForQuery(searchTerm)!, completionHandler: { (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
if (error != nil) {
println(error.localizedDescription)
}
var err: NSError?
let result: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
if (err != nil) {
println(err!.localizedDescription)
}
let results: NSMutableArray? = result.objectForKey("results") as? NSMutableArray

if let testVar = results {
// Uncomment this to print all feeds
println(testVar)
self.searchedPodcasts.removeAllObjects()
self.searchedPodcasts.addObjectsFromArray(testVar)
}

})
task.resume()

}

这基本上是查询 iTunes api 并返回一个结果数组 (searchedPodcasts)。当这些对象被添加到数组中时,我想在我的 tableView 中使用 reloadData()。我知道在这个函数中调用类似 TableViewController.tableView!.reloadData() 的做法是不好的做法,但是一旦将对象添加到数组中,我该怎么做呢?

我在 TableViewController 类中有一种我不满意的解决方法:

    func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
println("text did change")
let length = countElements(searchText)
if (length <= 3) {
searchModel.resetSearch()
searchTableView.reloadData()
} else if (length > 3) {
searchModel.performSearch(searchText)
searchTableView.reloadData()
}
}

这会很好地重新加载 TableView ,但仅当在 searchBar 上调用 textDidChange 时,这意味着一旦向数组添加了对象,您需要在 searchBar 中添加/删除字符以调用 reloadData()。有什么好的方法可以解决这个问题?

谢谢!

最佳答案

在这里你应该使用你的reloadData:

if let testVar = results {
// Uncomment this to print all feeds
println(testVar)
self.searchedPodcasts.removeAllObjects()
self.searchedPodcasts.addObjectsFromArray(testVar)
searchTableView.reloadData()
}

关于ios - 我什么时候应该重新加载数据()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28129797/

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