Swift在访问NSManagedObject的属性时给出错误线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x0)

时间:2015-01-22 15:47:28

标签: swift core-data exc-bad-access

我创建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编写了无效的表达式,请参阅下面的snaphsot ...

我无法找到我做错的地方以及loginModel实例可能发生的事情?

enter image description here

1 个答案:

答案 0 :(得分:0)

从您附加的屏幕截图中看起来发生了错误,因为您试图在删除该对象后访问对象的属性。此时,对象的属性将不再是有效的内存地址。