2016-09-16 90 views
0

我有一个UICollectionView,其中的单元格是从JSON响应数据填充的。目前这些单元格按类别填充,一切运行顺利。根据JSON swift中的参数自动排序UICollectionViewCell

我的问题是,单元格是按字母顺序排序的,它们是如何在JSON文件中排序的,但我希望按照每个类别包含的“喜欢计数”参数对它们进行排序。

到目前为止,我已经找到了如何启用用户拖动和重新排列单元格,但我想实施一个“自动排序”基于每个类别的“喜欢”的数量降序。

我很感激任何帮助。

编辑 - 使用Alamofire进行API调用和Swiftyjson解析。

Alamofire.request(.GET, "mydomain").responseJSON { (responseData) -> Void in 
      if((responseData.result.value) != nil) { 

       let swiftyJsonVar = JSON(responseData.result.value!) 

       if let resData = swiftyJsonVar.arrayObject { 

        self.arrRes = resData as! [[String:AnyObject]] 


       } 

       if self.arrRes.count > 0 { 

        self.collectionView.reloadData() 


       } 
      } 
     } 

使细胞

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

     let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! HomeCollectionViewCell 
     var dict = arrRes[indexPath.row] 

     cell.catLabel.text = dict["name"] as? String 
     let likes = dict["likes count"] as? Int 
     cell.layoutIfNeeded() 

     return cell 
    } 
+0

让我们看看你的反应/模型类和代码你用来做API调用之后。 –

+0

对dataSource和reloadData进行排序(如果需要)。 – Larme

+0

我已更新我的问题以包含我正在使用的代码。我可以尽可能用Swiftyjson返回计数数组,我只是不确定如何将这些信息用于排序目的。如果这太简单的请求,我仍然是一个新手,因此非常抱歉。 –

回答

0

假设数据设置标记是字典的阵列和“喜欢”计数是在字典中的键 - 值对,则可以使用

对它们进行排序

array.sortInPlace({$0.likes > $1.likes})

0

yourArray = JSON响应数据以获得阵列;

NSArray *sortedArray = [yourArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"likes" ascending:NO]]]; 

&然后应用到你的UICollectionView数据源中排序的数组 &刷新你UICollectionView