2017-07-03 3 views
-1

C'est la capture d'écran comme vous pouvez le voir montre l'erreur que je forcé déballés et quelques urls sont vides:Comment dérouler en toute sécurité cette URL facultative que j'appelle depuis ma base de données dans Firebase?

Image

Comment puis-je déballer en toute sécurité cette URL, donc je ne dois pas forcer Déballer?

code:

func tableView (_ tableView: UITableView, numberOfRowsInSection 
section: Int) -> Int 
{ 
     return players.count 
    } 
func tableView(_ tableView: UITableView, cellForRowAt indexPath: 
IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: 
Reusable.reuseIdForMain) as! CustomCell 
     cell.nameLabel.text = players[indexPath.row].name 
     cell.otherInfo.text = players[indexPath.row].otherInfo 


if let url = players[indexPath.row].imageUrl{ 
      cell.profileImage.load.request(with: URL(string:url)!) 

    } 


    return cell 
} 

Répondre

2

Vous devriez vérifier la valeur de l'URL elle-même après avoir vérifié la chaîne. Les deux chaînes seront déroulées en toute sécurité de cette façon.

if let urlString = players[indexPath.row].imageUrl, 
let url = URL(string: urlString) { 
    cell.profileImage.load.request(with: url) 
} 
-1

utilisation ci-dessous le code qui sera également résolu votre problème pour charger une image dans nano seconde essayer cette

extension UIImageView { 
public func imageFromUrl(urlString: String) { 
    if let url = NSURL(string: urlString) { 
     let request = NSURLRequest(url: url as URL) 
     NSURLConnection.sendAsynchronousRequest(request as URLRequest, queue: OperationQueue.main) { (response: URLResponse?, data: Data?, error: Error?) -> Void in 
      if let imageData = data as NSData? { 
       self.image = UIImage(data: imageData as Data) 
      } 
     } 
    } 
    } 
} 

Utilise

if players[indexPath.row].imageUrl != "" && players[indexPath.row].imageUrl != nil { 
    cell.profileImage.imageFromUrl(urlString: players[indexPath.row].imageUrl) 
} 

Espoir Cela vous aidera à votre problème

0

Vous pouvez essayer cette

if let imageUrl = players[indexPath.row].imageUrl as? String{ 
    let url = URL(string: imageUrl) 
    if let url = url { 
      cell.profileImage.load.request(with: url) 
    } 
    } 
+0

pourquoi u Cochez cette case si laisser url = url @DionizB –

+0

@DevTech s'il y a des données dans l'URL, 'si laissez url = url' renvoie true sinon renvoie false – DionizB