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。
答案 0 :(得分:1)
您可以在没有代码的情况下执行此操作,点击您的xcDatamodel选择您的实体而不是您的属性,然后在右侧您将获得所有属性设置为yes为默认
在创建支票集类型为真时,您希望通过代码执行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。检查设置其他属性,以便了解哪里出错。