2017-02-02 24 views
0

Ich habe ein paar ähnliche Fragen gelesen, aber keine von ihnen funktionierte für mich. Nun, ich versuche, verschiedene Bilder auf einer Liste zu zeigen und diese Bilder im Cache zu speichern. Ich erhalte einen Fehler beim Aufruf von iconView.sd.Aufruf von SDWebImage kann nicht aufgerufen werden

import UIKit 
import SDWebImage 

class TableViewCell: UITableViewCell { 

var item: ItemRealm? { 
    didSet { 
     if item == nil { 
      iconView.image = nil 
      itemTitleLabel.text = "Test" 
      itemDescLabel.text = "Some description" 
     } else { 
      // TODO: Implement item sets 
      iconView.sd_setImage(with: NSURL(string: (item?.icon)!), 
           placeholderImage: UIImage(named: "placeholder.png"), 
           completed: { (image: UIImage!, error: NSError!, cachetype: SDImageCacheType, imageURL: NSURL!) in 

              }) 
      itemTitleLabel.text = item?.name 
      itemDescLabel.text = item?.desc 

     } 
    } 
} 

@IBOutlet weak var iconView: UIImageView! 
@IBOutlet weak var itemTitleLabel: UILabel! 
@IBOutlet weak var itemDescLabel: UILabel! 

override func awakeFromNib() { 
    super.awakeFromNib() 
    iconView.layer.cornerRadius = 4 
} 

override func prepareForReuse() { 
    super.prepareForReuse() 
    self.item = nil 
} 

} 

Error : TableViewCell.swift:22:26: Cannot invoke 'sd_setImageWithURL' with an argument list of type '(NSURL?, placeholderImage: UIImage?, completed: (UIImage!, NSError!, SDImageCacheType, NSURL!) ->())'

Icons aus der Liste (log):

; icon: Optional("http://192.168.1.101:8080/api/items/0/icon.png") 
; icon: Optional("http://192.168.1.101:8080/api/items/1/icon.png")... 

Antwort

0

Das Problem wegen der Verwendung von sein kann alte NS-Typen, die in swift3 ersetzt wurde und auf die neuen Datentypen abgebildet zu werden von Swift3 automatisch jetzt.

iconView.sd_setImage(with: URL(string: item!.icon), 
     placeholderImage: UIImage(named: "placeholder.png"), 
        options: .highPriority) { image, error, cacheType, imageURL in 
} 
+0

Jetzt bekomme ich Fehler: Mehrdeutige Verwendung von 'sd_setImage'. – Vuko

+0

Habe es einfach ausprobiert und das selbe erlebt, auch wenn ich die Typen korrekt wie in meiner bearbeiteten Antwort angegeben habe. Es funktioniert nur für mich, wenn ich das Argument 'options:' hinzufüge. – Kie

+0

Okey. Vielen Dank. Wo fügen Sie diese Optionen hinzu: Argument Wenn ich fragen darf? – Vuko

1

Dies funktioniert für mich. Denken Sie daran, Optionen hinzuzufügen: Argument wie folgt.

iconView.sd_setImage(with: URL(string: item!.icon), placeholderImage: 
     UIImage(named: "placeholder.png"), options: SDWebImageOptions(), 
     completed: { (image: UIImage?, error: Error?, cachetype: SDImageCacheType, 
    imageURL: URL?) in 
      }) 
Verwandte Themen