Ios 为集合视图单元格对DynamoDB获取的表数据进行分类

Ios 为集合视图单元格对DynamoDB获取的表数据进行分类,ios,swift,amazon-web-services,nosql,Ios,Swift,Amazon Web Services,Nosql,我正在开发一个服务应用程序,用户在其中创建一个帖子,其详细信息保存在dynamoDb表中。我已经获取了表中的所有数据,现在我想在collection view controller中显示这些数据,这样每个单元格都代表一篇文章。现在我不知道如何将每个帖子从数据中分离出来,并将其提供给collection视图。我的表格字段是: 我的代码是: import UIKit import AWSDynamoDB class ProvidingViewController: UIViewControlle

我正在开发一个服务应用程序,用户在其中创建一个帖子,其详细信息保存在dynamoDb表中。我已经获取了表中的所有数据,现在我想在collection view controller中显示这些数据,这样每个单元格都代表一篇文章。现在我不知道如何将每个帖子从数据中分离出来,并将其提供给collection视图。我的表格字段是:

我的代码是:

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


    }


}

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

您面临的真正问题是,当视图加载图像数组时,图像数组为空,
CollectionView
加载为空;当您使用scanner方法在数组中加载图像时,您没有为
CollectionView
调用
reloadData
,这就是您无法在视图中看到任何内容的原因
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
    })

}

我想你需要先把数据转换成图像,你能在打印数组时显示你看到的吗?我有另一个带有图像数据和链接的表。这不是问题所在。Images是一个仅用于测试的数组。一旦我将userID附加到images数组并打印它,它就会显示表中的所有userID。问题是,我希望将数据逐行分离,这样我就可以将其用作单个post数据并显示在集合视图单元格中。确定后,在cellforItemAt中添加断点,然后查看是否正在生成单元格。我在获取数据时将数据插入数组,但没有生成单元格,array.count返回零,这意味着cellForItem。。当视图加载时加载,此时数组中没有数据。因此,请再次查看空白集合视图。它要求阵列在到达集合视图之前准备好,然后才生成单元。此视图控制器是主屏幕,不知道在主屏幕登陆之前从何处获取数据,以使阵列不为空。您能告诉我将数据加载到阵列中的方法吗?或者分享代码?谢谢@Shabir,让我试试。谢谢@Shabir,你很棒。我头痛了两天,但你终于解决了问题。我现在正在研究它,如果我面临进一步的问题,我将发表评论。谢谢。欢迎,顺便说一句,你也可以为其他人更新我的答案:)我已经更新了投票,它被记录下来了,但没有显示为我的声誉分数