Swift 在访问 NSManagedObject 的 属性 时给出错误线程 1: EXC_BAD_ACCESS(code=1, address=0x0)
Swift Gives error Thread 1: EXC_BAD_ACCESS(code=1, address=0x0) when accessing NSManagedObject's property
我创建 NSManagedObject 的子类对象的函数是;
func loginMoldelWithName(name: NSString, atIndexPath indexPath: NSIndexPath) -> LoginModel {
let entity = NSEntityDescription.entityForName("LoginModel", inManagedObjectContext: managedObjectContext!)
var login = LoginModel(entity: entity!, insertIntoManagedObjectContext: managedObjectContext)
login.name = name
login.date = NSDate()
login.rowIndex = indexPath.row as NSNumber
var error: NSError?
if !managedObjectContext!.save(&error) {
println("\(TAG) Could not save \(error), \(error?.userInfo)")
}
return login as LoginModel
}
还有一个要删除;
func deleteLoginModel(loginModel: LoginModel) {
println("\(TAG) \(loginModel.name)")
managedObjectContext?.deleteObject(loginModel)
var error : NSError?
if(managedObjectContext!.save(&error) ) {
println("\(TAG) \(error?.localizedDescription)")
}
}
问题发生在;
let loginModel = loginModels[indexPath.row] as LoginModel
println("\(TAG) \(loginModel.name)")
// remove from Core Data
deleteLoginModel(loginModel)
...
当我尝试访问 loginModel.name 时删除 loginModel 对象后,出现错误 "Thread 1: EXC_BAD_ACCESS(code=1, address=0x0)"
在变量视图中为 loginModel 编写了无效表达式,请参见下面的快照...
我找不到哪里做错了以及 loginModel 实例可能发生了什么?
从您附加的屏幕截图看来,错误的发生似乎是因为您正试图访问对象的 属性 之后 该对象已被删除。到那时,对象的属性将不再是有效的内存地址。
我创建 NSManagedObject 的子类对象的函数是;
func loginMoldelWithName(name: NSString, atIndexPath indexPath: NSIndexPath) -> LoginModel {
let entity = NSEntityDescription.entityForName("LoginModel", inManagedObjectContext: managedObjectContext!)
var login = LoginModel(entity: entity!, insertIntoManagedObjectContext: managedObjectContext)
login.name = name
login.date = NSDate()
login.rowIndex = indexPath.row as NSNumber
var error: NSError?
if !managedObjectContext!.save(&error) {
println("\(TAG) Could not save \(error), \(error?.userInfo)")
}
return login as LoginModel
}
还有一个要删除;
func deleteLoginModel(loginModel: LoginModel) {
println("\(TAG) \(loginModel.name)")
managedObjectContext?.deleteObject(loginModel)
var error : NSError?
if(managedObjectContext!.save(&error) ) {
println("\(TAG) \(error?.localizedDescription)")
}
}
问题发生在;
let loginModel = loginModels[indexPath.row] as LoginModel
println("\(TAG) \(loginModel.name)")
// remove from Core Data
deleteLoginModel(loginModel)
...
当我尝试访问 loginModel.name 时删除 loginModel 对象后,出现错误 "Thread 1: EXC_BAD_ACCESS(code=1, address=0x0)"
在变量视图中为 loginModel 编写了无效表达式,请参见下面的快照...
我找不到哪里做错了以及 loginModel 实例可能发生了什么?
从您附加的屏幕截图看来,错误的发生似乎是因为您正试图访问对象的 属性 之后 该对象已被删除。到那时,对象的属性将不再是有效的内存地址。