我正在尝试设置一个Image和两个标签文本:
cell.ogImageView.sd_setImage(with: URL(string: post.ogImageURL))
cell.titleLabel.text = post.title
cell.urlLabel.text = post.url
如果我在此之前打印出字符串:
print(post.ogImageURL)
print(post.title)
print(post.url)
我得到一个有效的字符串,以及错误:
评论sd_setImage...
也会为title
和url
提供相同的错误。
问题:这里发生了什么?由于字符串很好,我猜URL
是否在这里返回nil?但是为什么我的标题和网址也会出错,尽管它们都很好?
Cell的类:
class LinksCell: MGSwipeTableCell {
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var urlLabel: UILabel!
@IBOutlet weak var ogImageView: UIImageView!
}
我填充它们的viewDidLoad()
:
override func viewDidLoad() {
super.viewDidLoad()
linksTableView.register(LinksCell.self, forCellReuseIdentifier: "linksCellident")
dataSource = FUITableViewDataSource.init(query: getQuery()) { (tableView, indexPath, snap) -> MGSwipeTableCell in
let cell = tableView.dequeueReusableCell(withIdentifier: "linksCellident", for: indexPath) as! LinksCell
guard let post = LinksPost.init(snapshot: snap) else { return cell }
print(post.ogImageURL)
print(post.title)
print(post.url)
cell.ogImageView.sd_setImage(with: URL(string: post.ogImageURL))
cell.titleLabel.text = post.title
cell.urlLabel.text = post.url
return cell
}
dataSource?.bind(to: linksTableView)
linksTableView.delegate = self
}
“LinksPost”类:
class LinksPost: NSObject {
var url: String
var title: String
var ogImageURL: String
init(url: String, title: String, ogImageURL: String) {
self.url = url
self.title = title
self.ogImageURL = ogImageURL
}
init?(snapshot: DataSnapshot) {
guard let dict = snapshot.value as? [String: String] else { return nil }
guard let url = dict["url"] else { return nil }
guard let title = dict["ogTitle"] else { return nil }
guard let ogImageURL = dict["ogImageURL"] else { return nil }
print(ogImageURL)
self.url = url
self.title = title
self.ogImageURL = ogImageURL
}
convenience override init() {
self.init(url: "", title: "", ogImageURL: "")
}
}
调试变量也会显示有效的字符串:
答案 0 :(得分:1)
如果你删除这一行,似乎一切都有效:
linksTableView.register(...)
我非常不熟悉iOS开发,所以请耐心等待。 (也许专家可以插话?)我认为问题是这已经通过你的故事板中的原型内容设置了,并且在这里再次注册基本上撤消了设置的出口。您最终得到nil
,ogImageView
和titleLabel
的{{1}}值。
答案 1 :(得分:-1)
我不是100%确定,但你的tableView.dataSource是否正确链接?你的手机没有?在FUITableViewDataSource的回调中的每个步骤之后尝试断点,并查看导致崩溃的行。