为收集视图单元格分类DynamoDB获取的表数据

时间:2017-05-13 06:31:18

标签: ios swift amazon-web-services nosql

我正在开发一个服务应用,用户在其中创建一个帖子,其详细信息保存在dynamoDb表中。我已经获取了表中的所有数据,现在我想在集合视图控制器中显示数据,这样每个单元格代表单个帖子。现在我不确定如何将每个帖子与该数据分开并将其提供给集合视图。我的表字段是: Table_Screenshot

我的代码是:

import UIKit
import AWSDynamoDB

class ProvidingViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {

    @IBOutlet weak var PCV: UICollectionView!
    let db = AWSDynamoDBObjectMapper.default()
    let scanExpression = AWSDynamoDBScanExpression()
    var counter:Int = 0

     var imagex = ["UserIcon.png", "chat2.png","UserIcon.png", "delete.png","UserIcon.png", "delete.png","UserIcon.png", "delete.png","UserIcon.png", "delete.png","UserIcon.png", "delete.png"]

    var images:[String] = []

    override func viewDidLoad() {
        super.viewDidLoad()
        scanner()

    }
    ///
    func scanner(){

        scanExpression.limit = 2000

        db.scan(PostDetails.self, expression: scanExpression).continueWith(block: { (task:AWSTask!) -> AnyObject! in

            if task.result != nil {
                let paginatedOutput = task.result!

                //use the results
                for item in paginatedOutput.items as! [PostDetails] {
                     self.counter = paginatedOutput.items.count
                      self.images.append(item.userId!)


                }

                if ((task.error) != nil) {
                    print("Error: Could not fetch PostDetails table data")
                }
                return nil

            }

            return nil
        })

    }

    ///

    func numberOfSections(in collectionView: UICollectionView) -> Int {
        return 1
    }

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

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell = PCV.dequeueReusableCell(withReuseIdentifier: "c", for: indexPath) as! CellsCollectionViewCell
        cell.ProvImage.image = UIImage(named: imagex[indexPath.row])
        cell.ProvLabel.text = images[indexPath.row]
        return cell


    }


}

我有图像数组,我在其中获取数据。当我打印出阵列时它有数据但是当我将它分配给集合视图控制器时,屏幕显示为空,即没有单元格。请帮忙。感谢

1 个答案:

答案 0 :(得分:0)

您面临的真正问题是,当View加载图像数组为空并且CollectionView加载为空时,当您在扫描仪方法中加载数组中的图像时,您不会调用reloadData CollectionView这就是为什么在将数据加载到数组后,CollectionView中无法看到任何内容的原因。我正在更新你的扫描仪方法,尝试这个,它会工作。

func scanner(){

    scanExpression.limit = 2000

    db.scan(PostDetails.self, expression: scanExpression).continueWith(block: { (task:AWSTask!) -> AnyObject! in

        if task.result != nil {
            let paginatedOutput = task.result!

            //use the results
            for item in paginatedOutput.items as! [PostDetails] {
                 self.counter = paginatedOutput.items.count
                  self.images.append(item.userId!)


            }
            //This line is important because it tells collectionview that i have new data so please refresh.
            PCV.reloadData()
            if ((task.error) != nil) {
                print("Error: Could not fetch PostDetails table data")
            }
            return nil

        }

        return nil
    })

}