【发布时间】:2015-09-19 13:34:19
【问题描述】:
我正在开发一个应用程序,它可以从 Facebook 下载名称和图像,并将它们显示到 CollectionView 中。图片功能运行得很好,但是我对名称感到困惑。这是文本的 CollectionView 函数内的代码:
let url = NSURL(string: "http://www.facebook.com/" + newArray[indexPath.row])!
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (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]
//----- serperated ---------
dispatch_async(dispatch_get_main_queue())
{
if title == "Page Not Found" || title == "Pagina Niet Gevonden" {
} else {
stalkers.append(title)
}
}
}
}
task.resume()
cell.label.text = stalkers[indexPath.row]
return cell
问题是当应用程序启动时,它会因错误“数组超出索引”而崩溃。我认为这是因为加载时数组为空,下载需要一段时间。我不知道如何让标签在下载后显示每个名称..
非常感谢任何帮助,真的!谢谢!
【问题讨论】:
-
下载完成后尝试设置labelText。您可以在异步下载完成后编写回调处理程序
-
这就是完成块的用途:) 1. 下载您的数据 2. 当数据完成附加到数组调用
collectionView.reloadData或类似(我对集合视图不是很有经验)如果 collectionView有一个数据源 delegate-numberOfSomething-method,您可以简单地将计数设置为您的 array.count,以防止它尝试从 stalkers 数组加载。 -
对不起,错过了关于图片工作正常的部分。如果名称和图片相关,您可以创建一个具有字符串和 UIImage 作为属性的模型用户(或类似),并用这些填充 CV。 (或选择 William Hu 的回答)
标签: ios swift uicollectionview swift2