将 Firebase 图像显示到数组中

Posted

技术标签:

【中文标题】将 Firebase 图像显示到数组中【英文标题】:Display Firebase images into Array 【发布时间】: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 中? 【参考方案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
       
    
    使用 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) 上遇到错误。 “任何物体?”到预期的参数类型“字符串”。当我添加为!字符串我也崩溃了

以上是关于将 Firebase 图像显示到数组中的主要内容,如果未能解决你的问题,请参考以下文章

如何获取相册中图像的图像文件名和标签?

matlab中图像显示函数

将 Firebase 图像显示到数组中

用于 Numpy 数组中图像的图像数据生成器

转载Qt中图像的显示与基本操作

Qt中图像的显示与基本操作