我有一个小应用程序从网上下载一些名称,然后将它们附加到一个数组。
func fetchTitle(identifier: String, completion: (title: String) -> Void) {
let profileUrl = NSURL(string:"http://www.facebook.com/" + identifier)!
let task = NSURLSession.sharedSession().dataTaskWithURL(profileUrl) {
(data, response, error) -> Void in
if let urlContent = data {
let webContent = NSString(data: urlContent, encoding: NSUTF8StringEncoding)
let websiteArray = webContent!.componentsSeparatedByString("pageTitle\">")
let secondArray = websiteArray[1].componentsSeparatedByString("</title>")
let title = secondArray[0]
completion(title: title)
print(title)
}
}
task.resume()
}
//print(newArray)
var titles = [String]()
//let identifiers = ["100001986741004","100003866283798","100003455181526"]
let queue = dispatch_queue_create("titles", DISPATCH_QUEUE_SERIAL)
dispatch_apply(newArray.count, queue) { index in
let identifier = newArray[index]
fetchTitle(identifier) { title in
dispatch_async(queue) {
titles.append(title)
array.append(title)
}
}
}
我知道它非常复杂,因为它从数组中获取数字并将它们转换为从网络下载的名称,但从不介意。问题是,当我打印标题时,它给了我名字,所以我认为它确实将它们附加到数组,但是当我打印数组时,它没有给我任何结果..我认为这是因为它需要一点时间从网上下载数据,并立即打印,但如何在下载完成之前延迟打印(或显示到表格视图)?
感谢任何帮助!
非常感谢!
答案 0 :(得分:0)
我不知道swift,但是当你的数据被检索到时,在Objective-C中你可以调用[tableView reloadData];应该足够简单,以转换为Swift