从"最后修改"下载Firebase / Storage中的图像

时间:2016-09-20 13:37:54

标签: ios swift firebase storage firebase-storage

我想从我的Firebase / Storage下载图像,以及它们上传的时间。 这意味着,最后上传的图片将是我的新闻源中的第一张(有点像Instagram)。

我怎么能写这样的代码? 我真的不知道从哪里开始,我是做一个ImageArray,还是我必须定义每个UIImageView? 我无法找到Firebase就此主题提供的帮助。

帮助表示赞赏。 谢谢!

1 个答案:

答案 0 :(得分:2)

我们强烈建议您同时使用Firebase存储和Firebase实时数据库来完成此任务。以下是类似内容的完整示例:

共享:

// Firebase services
var database: FIRDatabase!
var storage: FIRStorage!
...
// Initialize Database, Auth, Storage
database = FIRDatabase.database()
storage = FIRStorage.storage()
...
// Initialize an array for your pictures
var picArray: [UIImage]()

上载:

let fileData = NSData() // get data...
let storageRef = storage.reference().child("myFiles/myFile")
storageRef.putData(fileData).observeStatus(.Success) { (snapshot) in
  // When the image has successfully uploaded, we get it's download URL
  let downloadURL = snapshot.metadata?.downloadURL()?.absoluteString
  // Write the download URL to the Realtime Database
  let dbRef = database.reference().child("myFiles/myFile")
  dbRef.setValue(downloadURL)
}

下载:

let dbRef = database.reference().child("myFiles")
dbRef.observeEventType(.ChildAdded, withBlock: { (snapshot) in
  // Get download URL from snapshot
  let downloadURL = snapshot.value() as! String
  // Create a storage reference from the URL
  let storageRef = storage.referenceFromURL(downloadURL)
  // Download the data, assuming a max size of 1MB (you can change this as necessary)
  storageRef.dataWithMaxSize(1 * 1024 * 1024) { (data, error) -> Void in
    // Create a UIImage, add it to the array
    let pic = UIImage(data: data)
    picArray.append(pic)
  })
})

此时,您只需使用picArray中的图片即可在tableView中显示这些图片。您甚至可以使用Firebase数据库查询来查询按文件的时间戳或其他信息排序(当您将URL写入数据库时​​,您将要编写该信息)。

有关详细信息,请参阅Zero to App: Develop with Firebase,以及associated source code,了解如何执行此操作的实际示例。