你能帮忙解决data.entry.init问题吗?

时间:2016-09-24 23:57:11

标签: ios swift xcode uitableview swift3

我得到"线程1:exc_bad_access(code = 2,address = 0x16fc0bfefe8)错误。我已经设置了iOS应用程序,以便在登录后访问Table View Controller。它应该显示图像。我一直在关注这个教程http://shrikar.com/uitableview-and-uitableviewcell-customization-in-swift/,但没有运气。这是我的data.swift文件,其中错误源自:

import Foundation

class Data {

class Entry: Data {
    let filename : String
    init(fname : String) {
        self.filename = fname
    }

}

let products = [
  Entry(fname: "placeholder1"), // <- Thread 1 error code shows in this line
  Entry(fname: "placeholder2"),
  Entry(fname: "placeholder3")
 ]

}

HomeTableViewController.swift

import UIKit

class HomeTableViewController: UITableViewController {

let data = Data()

override func viewDidLoad() {
    super.viewDidLoad()


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// MARK: - Table view data source

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return data.products.count
}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! HomeTableViewCell
    let entry = data.products[indexPath.row]
    let image = UIImage(named: entry.filename)
    cell.bkImageView.image = image

    return cell
}

HomeTableViewCell.swift

import UIKit

class HomeTableViewCell: UITableViewCell {

@IBOutlet weak var bkImageView: UIImageView!
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
}

}

谦虚地寻求一些帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

问题是这一行:

class Entry: Data {

由于Entry在创建Data实例时继承自Data,程序会进入无限循环,初始化products的第一个成员(Entry 1}})及其父类Data。相反,它应该是这个,根据教程:

class Entry {