【问题标题】:Display Firebase images into Array将 Firebase 图像显示到数组中
【发布时间】:2018-05-11 05:26:03
【问题描述】:

我想将 Firebase 中的图像显示到我的收藏视图中。我不知道如何从 Firebase 获取正确的节点来访问图像分支。有些用户最多有 5 个图像,但有些用户根本没有图像分支。这是我的 Firebase 数据结构。

var imagesArray: [String] = []

public func numberOfItems(in pagerView: FSPagerView) -> Int {
    return imagesArray.count
}

public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell {
    let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index)

    return cell
}

struct Users {
     var email: String!
     var uid: String!
     var ref: DatabaseReference!
     var location: String?
     var photoURL: String!
     var biography: String?
     var key: String?
     var name: String!
     var phoneNumber: NSNumber? 
     var password: String!
}

【问题讨论】:

  • 您的图片在 firebase 存储中,而链接 url 在 firebase 数据库中,对吗?
  • photoURL 不会显示在 collectionView 中,只会显示来自 images 分支的图像
  • 您是否将图像存储在 firebaseStorage 中?

标签: ios swift firebase firebase-storage


【解决方案1】:

这是您需要做的。

  1. 获取对图像节点的引用
    dbImageRef = Database.database().child("Users")
.child("Images")
.observeSingleEvent(of: .value, with: { (snapshot) in

      let value = snapshot.value as! NSDictionary 
       for image in value{


      // add the image links in an image array here
       }
    }
  1. 使用 Kingfisher 等库下载和显示图像。

【讨论】:

  • 应该是 .child("Users").child().child("Images")
  • 我收到此错误无法在 let value = snapshot 的第五行强制将“DataSnapshot”类型的值转换为“NSDictionary”类型
  • 对不起让 value = snapshot.value as! NS词典。已编辑后
  • self.imagesArray.append(image) :无法将类型“(键:任意,值:任意)”的值转换为预期的参数类型“字符串”
  • 你需要输入你的图片 url 来输入字符串,并注意这里的图片是 NSDictionary
【解决方案2】:

1) 取一个数组。

var arrImages: [[String: String]] = []

2) 然后使用这个函数到达图像节点。

Database.database().child("Users").child(<id>).child("Images").observe(.value) { (snapshot) in
            print(snapshot)
            if snapshot.childrenCount > 0 {
                for users in snapshot.children.allObjects as! [DataSnapshot] {
                    let images = users.value as? Dictionary
                        self.arrImages.append(images)
                    }

                self.collectionView.reloadData()
            }else{
                print("No Images")
            }
        }

【讨论】:

  • 我在 self.arrImages.append(image) 上遇到错误。 “任何物体?”到预期的参数类型“字符串”。当我添加为!字符串我也崩溃了
猜你喜欢
  • 1970-01-01
  • 2017-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
相关资源
最近更新 更多