Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 尝试更改布尔属性时出现EXC\u错误\u访问错误_Ios_Core Data_Swift - Fatal编程技术网

Ios 尝试更改布尔属性时出现EXC\u错误\u访问错误

Ios 尝试更改布尔属性时出现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

我试图更改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

}

更改属性例程

    // 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”默认值下的核心数据编辑器中。我没有将我的实体链接到正确的类。

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


我会尝试使用
NSNumber(bool:true)
而不是
true
。CoreData基于sqlite,该sqlite没有布尔类型,它在内部使用0/1个数字。这将产生类型错误,因为NSNumber不遵循
@NSManaged completed:bool
类型除非您明确选中“为原语使用标量值”,否则您的变量应为
NSNumber
创建核心数据模型文件时。看起来像是将子类中的数据类型更改为
NSNumber
。请参阅此帖子,类似:嘿,我也有同样的问题,但在检索bool时。当它在模式中显示为bool类型时,它存储为整数。我需要显示基于bool/整数值的内容。这是你知道的吗
commentsList[indexPath.row]。isSigned
给出了错误的访问异常。