使用数组中的一个索引

时间:2016-07-15 13:49:51

标签: arrays json swift uicollectionview

我有一个集合视图,显示接下来四天的天气数据。在这个块中

func prepareCollectionViewDataSource() {
        var x = self.city?.forecasts
        x?.removeFirst()
        self.otherDaysForecasts = x
    }

这就是x的样子:

[0] : Forecast
      - temperature : 296.84199999999998 { ... }
      - maximum : 296.84199999999998 { ... }
      - minimum : 296.84199999999998 { ... }
      - description : "light rain" { ... }
      - icon : "10d" { ... }
      - humidity : 92.0 { ... }
      - pressure : 1021.4299999999999 { ... }
      - wind : 1.8600000000000001 { ... }
      - date : 2016-07-18 18:00:00 +0000

我删除第一天并显示其他四个。从JSON我每三个小时得到一次天气数据。它是一个数组,我想每天只显示一个数据。

有任何建议如何做到这一点?

1 个答案:

答案 0 :(得分:1)

在集合视图中,首先,您需要准备数据,然后使用UICollectionViewDataSource

相应地填充数据

您的数据应该是类变量,因此可以从类

中的任何方法访问它
var forcastData = [] // this is your x, array of dictionary

这是您的UICollectionViewDataSource

extension YourViewController : UICollectionViewDataSource {

    override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
        return 1
    }

    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return forcastData.count
    }

    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! UICollectionViewCell
        // Here is the main part to configure the cell
        let data = forcastData[indexPath.row]
        // let say you have label for temparature that we want to set from your data in json dictionary
        cell.temperatureLabel.text = String(format: "%.2f MB", data.["temperature"].double!)
        return cell
    }
}

有简单的指南here。另请尝试详细了解UICollectionView

的自定义单元格