【发布时间】:2014-06-09 00:28:20
【问题描述】:
我正在尝试更改 Bool 属性并收到 EXC_BAD_ACCESS 错误。
我正在使用 XCode 6 和 Swift。
note 属性保存得很好,但completed 属性抛出了EXC_BAD_ACCESS 错误
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
【问题讨论】:
-
我会尝试使用
NSNumber(bool:true)而不是true。 CoreData 基于没有 bool 类型的 sqlite,它在内部使用 0/1 数字。 -
这将产生类型错误,因为 NSNumber 不遵循
@NSManaged completed: Bool类型 -
您的变量应该是
NSNumber,除非您在创建核心数据模型文件时明确选中“使用标量值作为基元”。 -
看起来在子类中将数据类型更改为
NSNumber有效。 -
看到这个帖子,类似:stackoverflow.com/questions/24333507/…