当前位置: 首页 > 面试题库 >

解析JSON后CollectionView不显示数据

宇文金鑫
2023-03-14
问题内容

解析JSON之后,我将数据保存在ViewController的arraOfData中,但collectionView不会显示此数据。如果我使用静态数组,一切正常。collectionview.reloadData()无法正常工作。我认为,需要以某种方式等待解析的数据,然后尝试加载collectionView。我尝试使用refreshControler来等待数据,但是我不知道put方法“
endRefreshing”在哪里(我认为ViewDidLoad中需要startRefreshing)如果我在arraOfData中使用像didSet这样的reloadData,则会出现错误,原因是collectionView为零。在解析完相同的数据后,立即使用reloadData对我不起作用,并且有一个大的请求要告诉这个主题几个资源(文章),我觉得我在显示数据以及按什么顺序开始加载函数方面遇到了很大的问题。非常感谢。

class ViewController: UIViewController {


@IBOutlet weak var collectionView: UICollectionView!


var arraOfData = [GettingMoney]() {
    didSet {
        print("Changes: \(arraOfData.count)")
    }
}

//  let arr = ["1", "2", "3"] - test, if i use this array, collectionView display data

  override func viewDidLoad() {
    super.viewDidLoad()
    GettingMoney.fetchData()

    collectionView.dataSource = self
    collectionView.delegate = self

  }

}

extension ViewController: UICollectionViewDelegate, 
   UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return arraOfData.count
}

  func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionCellId", for: indexPath) as? CollectionViewCell
    cell?.currentCurrency.text = "\(arraOfData[indexPath.row])"
    return cell!

  }
}

问题答案:

这样

GettingMoney.fetchData()

是异步过程的标志,它不会重新加载集合,所以

func fetchData(completion:@escaping ([String]) -> ()) {
    Api.load {
      completion(arr)
    }
}

然后使用像

GettingMoney.fetchData { arr in
   self.arraOfData = arr
   DispatchQueue.main.async {
     self.collectionView.reloadData()
  }
}


 类似资料:
  • 问题内容: 我在Angular中显示JSON数据时遇到麻烦。我已成功将数据从后端发送到前端(角度),但无法显示它们。 我已经尝试在JSFiddle上模拟类似的情况,尽管我已经从后端准备了数据 获取/发送数据->后端: 获取数据->前端(角度) 带有ng-repeat指令的HTML部分: 谁知道是什么问题吗? 问题答案: 据我所知,您将对象存储为JSON,但从未对其进行解析。因此使用 代替 应该解决

  • 试图制作一个简单的应用程序,从服务器获取JSON数据,并在自定义列表中显示它们,非常简单的事情。 但当我运行应用程序时,它显示的是白色空白屏幕,但没有数据。它也没有显示任何错误,我假设如果有任何错误,它不会在我的手机中运行。但不显示获取的数据。 下面是类 我发现的其他问题与我的问题不匹配,否则不会添加这个问题。

  • 我是jQuery新手,在jsp中将数据从servlet显示到jqGrid时遇到了困难。我使用google gson将数据从ArrayList转换为字符串变量json。当我运行项目时,它在控制台中显示json数据,并显示一个空网格。 Student.java 学生数据服务。JAVA 我的servlet代码: ervlet.java 我的JSP页面: 滑溜的网格演示。jsp

  • JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数: json.dumps(): 对数据进行编码。 json.loads(): 对数据进行解码。 在json的编解码过程中,python 的原始类型与json类型会相互转换,具

  • 概述 最近掉进需求坑了,刚爬上来,评估排期出现了严重问题,下面三张图很符合当时的心境。 谈需求 估排期 开始干 为啥会这样,我简单总结了下: 与第三方对接。 跨团队对接。 首次用 Go 做项目。 业务流程没屡清楚就出排期(大坑)。 需求调整后未进行调整排期(大坑)。 有了这次经验,后期关于如何评估排期也可以和大家唠唠。 废话不多说了,进入今天主题。 今天给大家分享用 Go 如何解析 JSON 数据

  • 问题内容: 过去几天,我一直在搜索有关此内容的信息,但我认为我找不到正确的指针。如果发现重复,请与适当的问题合并。 我是使用JSON的新手,作为我的项目之一,我需要解码JSON文件并对其进行进一步处理。但是,当我尝试使用Json- simple库解码时,在解析的对象中出现了一些奇怪的问号,而不是实际的字符。示例代码如下所示: 我也尝试过使用Json-lib,但结果相同。 谢谢您的帮助。 问题答案: