2016-06-07 4 views
1

Я сохранил изображение в хранилище Firebase, а также сохранил базу данных imageURL в Firebase, но как я могу вернуть изображение по URL-адресу, сохраненному в базе данных firebase? Вот как я сохранить егоFirebase извлекает изображение из URL-адреса с помощью базы данных Firebase

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) { 
    userPhoto.image = image 
    dismissViewControllerAnimated(true, completion: nil) 
    var data = NSData() 
    data = UIImageJPEGRepresentation(userPhoto.image!, 0.8)! 
    // set upload path 
    let filePath = "\(FIRAuth.auth()!.currentUser!.uid)/\("userPhoto")" 
    let metaData = FIRStorageMetadata() 
    metaData.contentType = "image/jpg" 
    self.storageRef.child(filePath).putData(data, metadata: metaData){(metaData,error) in 
     if let error = error { 
      print(error.localizedDescription) 
      return 
     } else { 
      // store downloadURL 
      let downloadURL = metaData!.downloadURL()!.absoluteString 
      // store downloadURL at database 
      self.databaseRef.child("users").child(FIRAuth.auth()!.currentUser!.uid).updateChildValues(["userPhoto": downloadURL]) 
     } 
    } 
} 

ответ

2

Вот один из способов сделать это, загрузив данные, а затем создать UIImage для него:

self.storage.referenceForURL(url).dataWithMaxSize(25 * 1024 * 1024, completion: { (data, error) -> Void in 
    let image = UIImage(data: data!) 
    chatMessage.image = image! 
    self.messages.append(chatMessage) 
    self.tableView.reloadData() 
    self.scrollToBottom() 
}) 

Этот код поступает из Zero To App talk at Google I/O. Полный код доступен в this gist

+0

Спасибо, Фрэнк! self.storage.referenceForURL (url) .dataWithMaxSize - это то, что мне нужно! Я решил свою проблему. –

Смежные вопросы