在tableview单元格上打印CoreData

时间:2017-12-22 01:33:56

标签: ios swift uitableview core-data tableview

我这里有2个不同的测试用例。在案例1中,这是我用来从CoreData打印全部条目的工作。我试过在app2中做同样的事情,但它不起作用。我想要做的就是在每个单独的单元格中包含所有核心数据条目。

APP1

override func viewDidLoad() {
    super.viewDidLoad()
    user = coreDataHandler.getSortedData()

    for i in user! {
        displayL.text = String(i.username)
    }
}

APP2

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    user = coreDataHandler.getSortedData()

    return user!.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = cctv.dequeueReusableCell(withIdentifier: "cell")

    for i in user! {
        cell?.textLabel?.text = String(describing: i.username)
        return cell!
    }

    return cell!
}

2 个答案:

答案 0 :(得分:0)

如果您想打印每个单元格中的所有用户条目,那么您可以尝试以下解决方案,

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    user = coreDataHandler.getSortedData()

    return user!.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell")

    for i in user! {
        cell?.textLabel?.text = String(describing: i.username)
    }

    return cell!
}

如果您想打印每个单元格中的每个条目,请尝试以下解决方案,

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    user = coreDataHandler.getSortedData()

    return user!.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell")

    let currentUser  = user[indexPath.row]

    cell?.textLabel?.text = String(describing: currentUser.username)

    return cell!
}

注意:这只是一个伪可能包含错误

答案 1 :(得分:0)

你做错了

这样做

let user: [UserType] = []

override func viewDidLoad() {
    super.viewDidLoad()
    user = coreDataHandler.getSortedData()
}

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
    let currentUser = user[indexPath.row]
    cell?.textLabel?.text = "\(currentUser.username)"
    return cell!
}

您不需要在cellForRowAt委托中再次进行迭代,因为它是自我迭代的delgate。

对于安全编码,请使用guard letif let来展开值。 在任何时间强制解包导致应用程序崩溃。