2017-06-15 143 views
0

我的代碼提供了一個資產圖像作爲每個人的圖片,我將如何更改它以獲取它從firebase檢索每個人的圖像?swift從firebase存儲上傳人圖像

import UIKit 
import Firebase 

class usersScreenVC: UITableViewController { 


    let cellId = "cellId" 
    var users = [User]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 


     navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(handleCancel)) 

     tableView.register(UserCell.self, forCellReuseIdentifier: cellId) 

     fetchUser() 
    } 




    func fetchUser() { 
     FIRDatabase.database().reference().child("Users").observe(.childAdded, with: { (snapshot) in 

      if let dictionary = snapshot.value as? [String: AnyObject] { 
       let user = User() 

       self.users.append(user) 

       user.DisplayName = dictionary["Display Name"] as? String 
       user.SubtitleStatus = dictionary["SubtitleStatus"] as? String 

       DispatchQueue.main.async { 
        self.tableView.reloadData() 
       } 

      } 

     }, withCancel: nil) 
    } 



    // 
    override  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
      return users.count 

     } 
    // 
     override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    //    let cell = UITableViewCell(style: .subtitle, reuseIdentifier: cellId) 
    // 
      let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) 

      let user = users[indexPath.row] 
      cell.textLabel?.text = user.DisplayName 
      cell.detailTextLabel?.text = user.SubtitleStatus 




      cell.imageView?.image = UIImage(named: "Home Button") 


      if let profileImageURL = user.profileImageURL{ 
       let url = URL(string: profileImageURL) 


       URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in 


        //this mean download hit an error so lets return out. 
        if error != nil { 
         //print(error) 
         return 
        } 


        DispatchQueue.main.async(execute: { 


        cell.imageView?.image = UIImage(data: data!) 

        }) 

       }).resume() 


      } 


      return cell 
     } 

class UserCell: UITableViewCell { 

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
     super.init(style: .subtitle, reuseIdentifier: reuseIdentifier) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    } 






}//class 

回答

0

**你需要把你的資產圖像,以火力第一**

調用此函數,你要發送的圖像

func uploadImageToFB (image : UIImage){ 

       let imageData = UIImageJPEGRepresentation(image, 1.0) 
       let metadata = StorageMetadata() 
       metadata.contentType = "image/jpeg" 
       let imagePath = Auth.auth().currentUser!.uid + "/\(Int(Date.timeIntervalSinceReferenceDate * 1000)).jpg" 

     //StorageRef is FIRDatabaseRefrence here you need to pass your storage url given in Firebase Console // 

       storageRef.child(imagePath).putData(imageData!, metadata: metadata, completion: { (metadata, error) in 
        if let error = error { 
         print("Error uploading photo: \(error)") 
         return 
        }else{ 
         let autoID = self.ref.childByAutoId().key 
         print(metadata ?? "") 
         let userID : String = Auth.auth().currentUser!.uid 
         let ImageRef : DatabaseReference = self.statusRef.child(userID) 

         let imageUrls = [ 
          "imageUrl" : metadata?.downloadURL()?.absoluteString 
          ] as [String : Any] 
         let userInfo = ["UserID":userID, 
             "userName":Auth.auth().currentUser!.displayName] 

    //Here Image Ref is FIRDatabaseRefrence upto the node you need to set your image 

    ImageRef.child("UserInfo").updateChildValues(userInfo) 

    ImageRef.child("Images").child(autoID).setValue(imageUrls) 
        } 
       }) 
      } 

現在同時取出由火力點你會得到你IMAGEURL也使用它。

希望它爲你工作

+0

是的,我已經這樣做了。 – benpalmer661

+0

我的firebase充滿了用戶和圖片以及圖片url作爲字符串 – benpalmer661

+0

ok那麼問題出在哪裏?請你解釋一下 –

0

我失蹤

user.profileImageURL =辭典[ 「profileImageUrl」]作爲?字符串

0
let imageData = UIImageJPEGRepresentation(image , 0.0) 
    let storage = Storage.storage() 
    let uploadRef = storage.reference().child("images/\(UUID().uuidString).jpg") 
    uploadRef.putData(imageData!, metadata: nil) { metadata, 
     error in 
     if error == nil { 
      print("successfully uploaded Image") 
      url = (metadata?.downloadURL()?.absoluteString)! 
      print("AhmedRabie \(url)") 
      self.activityIndecator.stopAnimating() 

     } 
     else { 
      print("UploadError \(String(describing: error))") 
     } 

    }