问题描述
有人知道为什么我在xCode v12中运行应用程序的模拟器时代码会抱怨吗? 我在行上收到错误消息: cell.likeControl.isFavored = request.isFavored
当我注释掉该行时,代码将正常运行。
源代码
RequestTableViewController.swift
import UIKit
class RequestTableViewController: UITableViewController {
//MARK: Properties
var requests = [Request]()
override func viewDidLoad() {
super.viewDidLoad()
loadSampledData()
// Uncomment the following line to preserve selection between presentations
// self.cleaRSSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem
}
(...)
override func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Table view cells are reused and should be dequeued using a cell identifier.
let cellIdentifier = "RequestTableViewCell"
guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier,for: indexPath) as? RequestTableViewCell else {
fatalError("The dequeued cell is not an instance of RequestTableViewCell.")
}
// Fetches the appropriate request for the data source layout.
let request = requests[indexPath.row]
cell.wordLabel.text = request.word
cell.countLabel.text = String(request.count)
cell.likeControl.isFavored = request.isFavored
return cell
}
//MARK: Private methods
private func loadSampledData() {
guard let request1 = Request(word: "Ghetto",count: 5,isFavored: false) else {
fatalError("Unable to instantiate request1")
}
guard let request2 = Request(word: "Skyskraber",count: 0,isFavored: false) else {
fatalError("Unable to instantiate request2")
}
guard let request3 = Request(word: "Hjem",count: 1,isFavored: true) else {
fatalError("Unable to instantiate request3")
}
print(requests)
requests += [request1,request2,request3]
}
}
RequestTableViewCell.swift
import UIKit
class RequestTableViewCell: UITableViewCell {
@IBOutlet weak var wordLabel: UILabel!
@IBOutlet weak var countLabel: UILabel!
@IBOutlet weak var thumbsControl: ThumbsControl!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool,animated: Bool) {
super.setSelected(selected,animated: animated)
// Configure the view for the selected state
}
}
LikeControl.swift
import UIKit
@IBDesignable class LikeControl: UIStackView {
//MARK: Properties
private var thumbsImage = UIButton()
var isFavored = false
//MARK: Initialization
override init(frame: CGRect) {
super.init(frame: frame)
setupButton()
}
required init(coder: NSCoder) {
super.init(coder: coder)
setupButton()
}
//MARK: Button action
@objc func likeButtonTapped(button: UIButton) {
isFavored.toggle()
print("Button updated")
}
//MARK: Private Methods
private func setupButton() {
let bundle = Bundle(for: type(of: self))
let emptyUp = UIImage(named: "thumbs-up-regular",in: bundle,compatibleWith: self.traitCollection)
let filledUp = UIImage(named: "thumbs-up-solid",compatibleWith: self.traitCollection)
let highlightedUp = emptyUp?.withTintColor(.blue)
let emptyDown = UIImage(named: "thumbs-down-regular",compatibleWith: self.traitCollection)
let button = UIButton()
button.setimage(emptyUp,for: .normal)
button.setimage(filledUp,for: .selected)
button.setimage(highlightedUp,for: .highlighted)
button.setimage(emptyDown,for: [.highlighted,.selected])
// Setup the button action
button.addTarget(self,action: #selector(LikeControl.likeButtonTapped(button:)),for: .touchUpInside)
print("Button created")
}
}
Request.swift
import Foundation
class Request {
//MARK: Properties
var word: String
var count: Int
var isFavored: Bool
//MARK: Initialization
init?(word: String,count: Int,isFavored: Bool) {
guard !word.isEmpty else {
return nil
}
guard count >= 0 else {
return nil
}
guard !isFavored || (isFavored && count > 0) else {
return nil
}
self.word = word
self.count = count
self.isFavored = isFavored
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)