如何将defaultData的默认布尔值保存为true或false?

时间:2018-05-26 05:13:35

标签: swift xcode core-data

import UIKit
import CoreData
var kind = true

customTableViewCell中的两个按钮。

    protocol KindTableViewCellDelegate: class {
    func kindTableViewCellDidTapReceive(_ kindTableViewCell: KindTableViewCell)
    func kindTableViewCellDidTapPaid(_ kindTableViewCell: KindTableViewCell)
}
class KindTableViewCell: UITableViewCell {
    let check  = Checks(context: PersistentService.context)

    @IBOutlet weak var paidButton: UIButton!
    @IBOutlet weak var recivedButton: UIButton!
    var delegate: KindTableViewCellDelegate?



    @IBAction func paidButtonClicked(_ sender: Any) {
        paidButton.setImage(#imageLiteral(resourceName: "red on"), for: UIControlState.normal)
        recivedButton.setImage(#imageLiteral(resourceName: "green off"), for: UIControlState.normal)
        delegate?.kindTableViewCellDidTapReceive(self)
        kind = true
        check.kind = kind

    }

    @IBAction func recivedButtonClicked(_ sender: Any) {
        recivedButton.setImage(#imageLiteral(resourceName: "green on"), for: UIControlState.normal)
        paidButton.setImage(#imageLiteral(resourceName: "red off"), for: UIControlState.normal)
        delegate?.kindTableViewCellDidTapPaid(self)
        kind = false
        check.kind = kind

    }

在此代码的正常情况下,CoreData中的布尔类型为null。 我想将默认值保存为CoreData。

1 个答案:

答案 0 :(得分:1)

您可以在没有代码的情况下执行此操作,点击您的xcDatamodel选择您的实体而不是您的属性,然后在右侧您将获得所有属性设置为yes为默认enter image description here

在创建支票集类型为真时,您希望通过代码执行InCase

let check  = Checks(context: PersistentService.context)
check.kind = true //default value 
context.save() // save your context

或重写awakeFromInsert方法

  

awakeFromInsert仅在对象的生命周期中调用一次   它首先被创建。

override func awakeFromInsert() {
    super.awakeFromInsert()
    kind = true
}

在你的情况下,如果

kind = false
check.kind = kind 
context.save() //   save context after setting value. 

这仍然在数据库中显示为nil然后您的属性或上下文出现问题,因为在数据库中应该为paidButtonClicked设置为true而对recivedButtonClicked设置为false并且不能为nil。检查设置其他属性,以便了解哪里出错。