存储/在Swift在自定单元检索核心数据(Storing / Retrieving Core Dat

2019-10-22 00:06发布

在iOS应用我写保存日期以核心数据然后计算今天与在TableView中显示存储日期 之间时间

我能够成功地检索核心数据的日期和TableView中每个StoredDate显示TimeBetween。

当我从标准的细胞自定义单元格更改时发生问题。 我不知道如何将核心数据传输给每个自定单元的实例。 或者,如果核心数据会自动传送到每个自定义单元格,我不知道如何访问的变量。

这是我改变为自定义单元格这是工作前,有它:

// Generate the cells
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("Tablecell", forIndexPath: indexPath) as UITableViewCell
let countdownEntry = fetchedResultController.objectAtIndexPath(indexPath) as CountdownEntry

// Grab the elements using the tag
        let labelCountdown:UILabel? = cell.viewWithTag(1) as UILabel?
        let labelName:UILabel? = cell.viewWithTag(2) as UILabel?
        let iconImage:UIImageView? = cell.viewWithTag(3) as UIImageView?

labelCountdown.text = CountdownEngine.timeBetweenDatesRealTime(countdownEntry.date)

在自定义单元格,我想打电话给timeBetweenDatesRealTime函数(计算存储的日期和今天之间的时间和结果显示在标签)通过的NSTimer功能每隔1秒( 在这里看到我是如何设置的,如果相关 ),但我不能访问countdownEntry.date

这里是我的自定义单元格类:

import UIKit

class CountdownTableViewCell: UITableViewCell {

// Outlets
@IBOutlet weak var iconImage: UIImageView!
@IBOutlet weak var labelName: UILabel!
@IBOutlet weak var labelCountdown: UILabel!

// Counter Variable
var timeInterval: NSTimeInterval = 0 {
    didSet {
        labelCountdown.text = "\(timeInterval)"
    }
}

func updateUI() {
    println("updating custom cell")

    /*
        // Show real-time countdown of time remaining between today and saved date
        labelCountdown.text = CountdownEngine.timeBetweenDatesRealTime(countdownEntry.date)
    }
    */
}


override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
    println("code from cell called")

    // add listener
    let notificationCenter = NSNotificationCenter.defaultCenter()
    notificationCenter.addObserver(self, selector: Selector("updateUI"), name: "CustomCellUpdate", object: nil)


}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

// MARK: self-cleanup
deinit {
    NSNotificationCenter.defaultCenter().removeObserver(self)
}

}

Answer 1:

如果您使用的是故事板配置的细胞,你需要的类表观察室更改为您的自定义类的故事板。

如果您使用的不是故事板,你应该使用注册您的自定义单元格类registerClass:forCellReuseIdentifier:

一旦你这样做,表视图应该返回您的自定义类,以便可以修改类似下面的代码: var cell = tableView.dequeueReusableCellWithIdentifier("Tablecell", forIndexPath: indexPath) as CountdownTableViewCell

然后,您可以创建属性countdownEntryCountdownTableViewCell类,这样就可以设置该属性中tableView:cellForRowAtIndex:



文章来源: Storing / Retrieving Core Data in Custom Cell in Swift