尝试更改Bool属性时出现EXC_BAD_ACCESS错误

时间:2014-06-09 00:28:20

标签: ios core-data swift

我正在尝试更改Bool属性并收到EXC_BAD_ACCESS错误。

我正在使用XCode 6和Swift。

note属性保存正常,但completed属性会引发EXC_BAD_ACCESS错误

enter image description here

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

4 个答案:

答案 0 :(得分:2)

遇到同样的问题,解决方案确实是在@NSManaged属性中使用NSNumber。此外,您可以定义计算的Bool属性,以便您可以在业务逻辑中使用标量布尔值,而不是使用NSNumber。

var isCompleted: Bool {
get {
    return completed == NSNumber(bool: true)
}
set {
    completed = NSNumber(bool: newValue)
}
}

答案 1 :(得分:1)

我只是考虑提交错误,因为我有同样的问题,但如果你真的想要使用Bool,那么解决方法就是使用这种方法:

setValue(true, forKey: "completed")

答案 2 :(得分:0)

我几乎遇到了这个问题。

布尔值适用于核心数据。

我遇到的问题是在'配置'和'C'默认下的核心数据编辑器中。我没有将我的实体链接到正确的班级。

答案 3 :(得分:0)

您可以将Bool与NSManagedObject一起使用-不需要NSNumber废话。但是您需要确保在核心数据编辑器中该类不为空。输入对象的名称。

do not leave this empty