我有这个叫api函数:
func searchResults(){
let urlString = "http://dev.jocom.com.my/feed"
Alamofire.request(.POST, urlString , parameters: ["req" : "pro_name", "code" : searchString!])
.responseData { response in
switch response.result {
case .Success:
let apiSearchXML = SWXMLHash.parse(response.data!)
for elem in apiSearchXML["rss"]["channel"]["item"]{
self.imageURL.append(elem["thumb_1"].element!.text!)
self.name.append(elem["name"].element!.text!)
}
print(self.name)
case .Failure(let error):
print(error)
}
}
}
当我输出输出时,似乎没问题,数组包含了什么。但是当我试图将它调用显示在我的集合视图中时,它没有返回行,它变空了,为什么呢?
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.name.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! SearchResultsCollectionViewCell
cell.titleLabel.text = "abc"
cell.setNeedsDisplay()
return cell
}
答案 0 :(得分:0)
你应该致电
dispatch_async(dispatch_get_main_queue()) {
collectionView.reloadData()
}
从服务器获得回调时。
答案 1 :(得分:0)
“Alamofire中的网络是异步完成的。”
这意味着,在您致电searchResults
后,您的请求将会完成一段未知的时间。
您最好的策略是在成功模块中更新您的收藏视图。 (确保在主线程上进行UI更新。)
答案 2 :(得分:0)
您需要一个完成处理程序才能完成.agg({'male': 'sum', 'female':'sum'})
调用,然后您可以使用结果填充数组。我相信你的Async
是一个字符串数组。这样做:
name
然后当你打电话时,就像这样:
func searchResults(complete: (names: [String]) -> ()){
let aVar = [String]()
//your code
for elem in apiSearchXML["rss"]["channel"]["item"]{
aVar.append(elem["name"].element!.text!)
}
complete(names: aVar)
//your code
}