Swift - 将单元格 customImageView.image 设置为 nil 会导致错误
Swift - Setting cell customImageView.image to nil causes error
我目前正在开发一个应用程序的新闻页面,我们在尝试将单元格的 customImageView.image 设置为 nil 时遇到了一个问题,以确保单元格在加载时不会加载另一个单元格的图像它是自己的:
cellForRowAtIndexPath (tableView)
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var requestImg: Alamofire.Request?
var article : NewsItem
article = filteredArticles[indexPath.row]
let imageUrl = NSURL(string: article.image)
if imageUrl == nil || article.image.isEmpty { newsCellIdentifier = "NewsCellNoImage" }
else { newsCellIdentifier = "NewsCell" }
let cell = self.tableView.dequeueReusableCellWithIdentifier(newsCellIdentifier) as! NewsCell
if (imageUrl != nil || !article.image.isEmpty) {
cell.customImageView.image = nil // < ISSUE HERE
requestImg?.cancel()
requestImg = Alamofire.request(.GET, article.image).responseImage() {
(request, _, image, error) in
if error == nil && image != nil {
cell.customImageView.image = image
}
}
}
cell.titleLabel.text = article.title
cell.categoryLabel.text = article.category
return cell
}
NewsCell.Swift
class NewsCell: UITableViewCell {
@IBOutlet var titleLabel: UILabel!
@IBOutlet var customImageView: UIImageView!
@IBOutlet weak var categoryLabel: UILabel!
@IBOutlet weak var articleTime: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
问题在调用 cell.customImageView.image = nil
时出现,我得到的是:fatal error: unexpectedly found nil while unwrapping an Optional value
。
在我看过的所有地方,这是重置 UIImageView 图像的正确方法,所以如果我出错的地方提供任何帮助,我们将不胜感激。
@IBOutlet var customImageView: UIImageView!
在此处使用 !
定义展开值会导致问题。因为如果你用 !
转换值,那意味着它不能是 nil
将其设为可选即可解决问题
@IBOutlet var customImageView: UIImageView?
我目前正在开发一个应用程序的新闻页面,我们在尝试将单元格的 customImageView.image 设置为 nil 时遇到了一个问题,以确保单元格在加载时不会加载另一个单元格的图像它是自己的:
cellForRowAtIndexPath (tableView)
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var requestImg: Alamofire.Request?
var article : NewsItem
article = filteredArticles[indexPath.row]
let imageUrl = NSURL(string: article.image)
if imageUrl == nil || article.image.isEmpty { newsCellIdentifier = "NewsCellNoImage" }
else { newsCellIdentifier = "NewsCell" }
let cell = self.tableView.dequeueReusableCellWithIdentifier(newsCellIdentifier) as! NewsCell
if (imageUrl != nil || !article.image.isEmpty) {
cell.customImageView.image = nil // < ISSUE HERE
requestImg?.cancel()
requestImg = Alamofire.request(.GET, article.image).responseImage() {
(request, _, image, error) in
if error == nil && image != nil {
cell.customImageView.image = image
}
}
}
cell.titleLabel.text = article.title
cell.categoryLabel.text = article.category
return cell
}
NewsCell.Swift
class NewsCell: UITableViewCell {
@IBOutlet var titleLabel: UILabel!
@IBOutlet var customImageView: UIImageView!
@IBOutlet weak var categoryLabel: UILabel!
@IBOutlet weak var articleTime: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
问题在调用 cell.customImageView.image = nil
时出现,我得到的是:fatal error: unexpectedly found nil while unwrapping an Optional value
。
在我看过的所有地方,这是重置 UIImageView 图像的正确方法,所以如果我出错的地方提供任何帮助,我们将不胜感激。
@IBOutlet var customImageView: UIImageView!
在此处使用 !
定义展开值会导致问题。因为如果你用 !
转换值,那意味着它不能是 nil
将其设为可选即可解决问题
@IBOutlet var customImageView: UIImageView?