Swift Firebase从数据库显示到表格视图中的label.text

时间:2018-08-26 20:21:34

标签: swift firebase firebase-realtime-database

我将尽力解释这个问题,因为这有点令人困惑。我正在创建一个餐厅评分应用程序,供其用户对餐厅进行评分(以1到5星的评分标准)。我将保持用户对Firebase的投票,然后计算该特定餐厅的平均评分并将其显示在我的应用中。

总而言之,在我的主表视图中,将有餐厅名称及其旁边的等级,这些等级由UIImage(星形图标)和标签(以显示其等级)保存。我已经通过跟踪用户单击了哪个单元格(餐厅)的参数为每个餐厅创建了一个评论部分,并基于该参数在firebase数据库中创建或更新了该餐厅的节点,并且可以显示特定于该餐厅的评论餐馆在应用程序中没有问题。单击餐厅后,用户将被带到该餐厅的评论部分。

现在,我还在考虑将评级存储在每个餐厅的相同节点上。就像我之前说的,我想在到达评论部分之前将整体评分存储在餐厅旁边的标签中。我的问题是,在将评分存储在数据库中之后,我将如何实际管理对标签显示正确的评分?我的意思是,我通过创建一个参数来跟踪单击哪个单元格来跟踪要在我的评论部分显示的评论,但是现在,我希望我的应用在用户点击餐厅之前直接显示餐厅的评分。

这可能吗?如果是,我该如何管理?我希望我能解释清楚。我将不胜感激。非常感谢您阅读我的长篇文章!

2 个答案:

答案 0 :(得分:1)

这个问题有点超出此处应如何提问的范围,但我会尽力在这里给您一些建议!

您正在寻找的东西绝对是可能的,并且坦率地说,这是开始进行iOS项目的好地方。

1:Firebase数据库是一个很棒的工具,但是,如果您要开始一个新项目,则应该使用Firebase Firestore。 Firebase数据库已被弃用(即,他们将在某个时候减少对它的支持),并且Firestore通常更容易掌握。

2:要使用Firestore进行操作的一种常用方法是,使一个文档包含有关每个餐厅的所有数据,然后使每个餐厅​​包含所有评论的集合。

3:Firebase还具有一项称为“功能”的功能,您应该绝对检查一下。每当Firestore中的“事件”发生时,功能便可以运行。因此,实际上很容易创建一个功能,每当创建一个餐厅的新评论/评论时,它就会收集所有评论,创建一个平均值,然后以该平均分数更新您的餐厅。

因此,这是一个有效的数据结构的大致概念:

 [restaurants]
  -> {restaurantId}
    - about
    - name
    - blahBlahBlah
    - averageRating
    - [reviews]
      -> {reviewId}
      - text
      - rating

编码愉快!

答案 1 :(得分:0)

应该很简单:

  • 首先模拟您的评分系统;第二个保留这些实例 评分;
  • 在Restaurants类中创建一个方法,该方法根据评分系统的结果返回当前评分。
  • **提示:(此方法返回的是您在标签上显示的内容。)***

最后,在tableview / collectionView标签中,您应该只调用该方法。如果您正确执行所有操作。不论您将来对评分系统进行任何更改,tableview都会收集并显示该数据。

更明确地说:

  • 将您的餐馆加载到火力发源地。
  • 当用户对餐厅进行评分时,请在Restaurant类中使用一种方法来处理此类请求。例如currentRestaurant.updateRating()
  • 将更改加载到Firebase数据库中。
  • 在tableview / CollectionView中调用类似currentRestaurant.retreiveRating()的内容

此外,您的dataManager应该处理所有上传/下载操作,而不是实际的Restaurant对象。