我有一个collectionview,我有一个带有字符串用户名的数组,它连接到parse,但是当我运行程序时,collectionview不会显示任何内容。我通过在数组中手动输入值来硬编码它并且它工作,但是一旦我从解析中检索字符串它就不起作用。我该如何解决这个问题?
var arrayOfFriendsNames = [String]()
var arrayOfFriendsTest: [String] = ["fire.png, fire.png, fire.png"]
override func viewDidLoad() {
super.viewDidLoad()
var query = PFQuery(className: "_User")
query.findObjectsInBackgroundWithBlock({
(objects: [AnyObject]?, error: NSError?) -> Void in
var objectIDs = objects as! [PFObject]
for i in 0...objectIDs.count-1{
self.arrayOfFriendsNames.append(objectIDs[i].valueForKey("username") as! String)
print(self.arrayOfFriendsNames)
}
})
self.collectionView.reloadData()
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return arrayOfFriendsNames.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell: friendcellView = collectionView.dequeueReusableCellWithReuseIdentifier("friendcell", forIndexPath: indexPath) as! friendcellView
cell.friendname.text = arrayOfFriendsNames[indexPath.row]
cell.friendpic.image = UIImage(named: arrayOfFriendsTest[indexPath.row])
cell.friendpic.layer.cornerRadius = cell.friendpic.frame.size.width/2;
cell.friendpic.clipsToBounds = true
return cell
}
答案 0 :(得分:0)
完成从reloadData
加载数据后,请务必在UICollectionView
实例上调用Parse
方法。如果是,请检查UICollectionView
的约束,并确保它们是正确的。另一种可能是Parse
不向代码返回任何数据,因此请确保您的数组中包含有效数据。
您的代码存在的问题是您拨打self.collectionView.reloadData()
的地方。您需要在findObjectsInBackgroundWithBlock
query.findObjectsInBackgroundWithBlock({
(objects: [AnyObject]?, error: NSError?) -> Void in
var objectIDs = objects as! [PFObject]
for i in 0...objectIDs.count-1{
self.arrayOfFriendsNames.append(objectIDs[i].valueForKey("username") as! String)
print(self.arrayOfFriendsNames)
}
NSOperationQueue.mainQueue().addOperationWithBlock { () -> Void in
self.collectionView.reloadData()
}
})
您也可以使用GCD
方法作为@anhtu回答
答案 1 :(得分:0)
尝试从DB
获取数据后重新加载 query.findObjectsInBackgroundWithBlock({
(objects: [AnyObject]?, error: NSError?) -> Void in
var objectIDs = objects as! [PFObject]
for i in 0...objectIDs.count-1{
self.arrayOfFriendsNames.append(objectIDs[i].valueForKey("username") as! String)
print(self.arrayOfFriendsNames)
}
dispatch_async(dispatch_get_main_queue()) {
self.collectionView.reloadData()
}
})