UILabel不会使用来自willDisplayCell上的CoreData的数据进行更新。

时间:2015-07-03 23:43:49

标签: ios swift uitableview

我有一个有4个标签的UITabController。在其中一个选项卡上,我有一个uitableviewcontroller,它托管包含UILabel的单元格(此UILabel名为' dataCount),它将显示在核心数据上找到的实体中的项目数和仅显示名称的UILabel(这个UILabel被命名为“nameLabel'”。我试图在显示选项卡时,在核心数据中搜索与单元格 nameLabel 同名的属性,一旦找到,我只需使用一些业务逻辑从核心数据中获取数据然后插入我在 dataCount UILabel中找到的项目数。这是有效的,但是无论何时访问选项卡,都会在UITableViewCell上不断更新这些数据。任何人都可以告诉我如何能够始终从核心数据中获取数据,并在访问该特定选项卡时将其显示在单元格上的UILabel上?一些有效但不可行的东西正在重新加载willDisplayCell上的tableview。这样做只会持续增加CPU。

我的尝试:

  override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {



        // Search for number of notes
        var notesFetchRequest = NSFetchRequest(entityName: "Notes")
        var numberOfNotes = managedObjectContext.executeFetchRequest(notesFetchRequest, error: nil) as? [NSManagedObject]
        var notesCount = 0

        if let notes = numberOfNotes {
            for items in notes as! [Notes] {
                if items.name == (cell as! MyCell).nameLabel.text!{
                    notesCount += 1
                }
            }
        }


        (cell as! MyCell).dataCount.text = String(notesCount)


        //self.mytableview.reloadData() -- works but CPU increases exponentially

    }

1 个答案:

答案 0 :(得分:0)

似乎当我在 viewDidAppear 上重新加载tableview时,数据会正确显示和更新。问题解决了。如果有人在优化和可行性方面有任何其他建议,请告诉我。

override func viewDidAppear(animated: Bool) {
        self.mytableview.reloadData()
    }