Ios 尝试更改布尔属性时出现EXC\u错误\u访问错误
我试图更改Bool属性,但收到EXC\u BAD\u访问错误 我使用的是XCode 6和SwiftIos 尝试更改布尔属性时出现EXC\u错误\u访问错误,ios,core-data,swift,Ios,Core Data,Swift,我试图更改Bool属性,但收到EXC\u BAD\u访问错误 我使用的是XCode 6和Swift note属性保存良好,但completed属性抛出EXC\u BAD\u访问错误 import Foundation import CoreData class Task: NSManagedObject { @NSManaged var note: String! @NSManaged var completed: Bool } 更改属性例程 // taskOb
note
属性保存良好,但completed
属性抛出EXC\u BAD\u访问错误
import Foundation
import CoreData
class Task: NSManagedObject
{
@NSManaged var note: String!
@NSManaged var completed: Bool
}
更改属性例程
// taskObject is an instance of Task()
// Set the completed flag
taskObject.completed = true // EXC_BAD_ACCESS
我正在考虑提交一个bug,因为我有同样的问题,但如果您真的想使用Bool,那么解决方法是使用以下方法:
setValue(true, forKey: "completed")
如果遇到同样的问题,解决方案确实是在@NSManaged属性中使用NSNumber。此外,还可以定义computed Bool属性,以便在业务逻辑中使用标量布尔值,而不是NSNumber
var isCompleted: Bool {
get {
return completed == NSNumber(bool: true)
}
set {
completed = NSNumber(bool: newValue)
}
}
我几乎完全有这个问题
布尔运算适用于核心数据
我遇到的问题是在“配置”和“C”默认值下的核心数据编辑器中。我没有将我的实体链接到正确的类。您可以将swiftBool
与NSManagedObject一起使用-无需使用NSNumber
无意义。但是您需要确保在核心数据编辑器中,类不是空的。输入对象的名称
我会尝试使用NSNumber(bool:true)
而不是true
。CoreData基于sqlite,该sqlite没有布尔类型,它在内部使用0/1个数字。这将产生类型错误,因为NSNumber不遵循@NSManaged completed:bool
类型除非您明确选中“为原语使用标量值”,否则您的变量应为NSNumber
创建核心数据模型文件时。看起来像是将子类中的数据类型更改为NSNumber
。请参阅此帖子,类似:嘿,我也有同样的问题,但在检索bool时。当它在模式中显示为bool类型时,它存储为整数。我需要显示基于bool/整数值的内容。这是你知道的吗commentsList[indexPath.row]。isSigned
给出了错误的访问异常。