Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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 尝试删除Object类型的子对象时域崩溃_Ios_Swift_Realm - Fatal编程技术网

Ios 尝试删除Object类型的子对象时域崩溃

Ios 尝试删除Object类型的子对象时域崩溃,ios,swift,realm,Ios,Swift,Realm,我有一个类UserObject(Object),它有SessionObject(Object)的一个属性,SessionObject有其他领域对象(TestObject,NewObject)的属性。 当我成功删除子对象和父对象之后,应用程序会因访问错误而崩溃:EXC_Bad_Access(code=EXC_I386_GPFLT) 您正在运行到,它适用于Swift类上的动态属性。当前,Realm不会生成符合ARC对特殊命名方法的期望的访问器方法,这会导致当您的属性名称以new、copy或mutab

我有一个类UserObject(Object),它有SessionObject(Object)的一个属性,SessionObject有其他领域对象(TestObject,NewObject)的属性。 当我成功删除子对象和父对象之后,应用程序会因访问错误而崩溃:EXC_Bad_Access(code=EXC_I386_GPFLT)


您正在运行到,它适用于Swift类上的
动态
属性。当前,Realm不会生成符合ARC对特殊命名方法的期望的访问器方法,这会导致当您的属性名称以
new
copy
mutableCopy

开头时,对象被双重删除,适用于Swift类的
动态
属性。当前,Realm不会生成符合ARC对特殊命名方法要求的访问器方法,这会导致当属性名称以
new
copy
mutableCopy
开头时,对象被双重删除。更改属性名称解决了问题。你是对的。更改属性名称解决了此问题。
class UserObject: Object{
   dynamic var uuid = ""
   dynamic var username = ""
   dynamic var session: SessionObject?

class SessionObject: Object{
    dynamic var tokenType = ""
    dynamic var refreshToken = ""
    dynamic var test: TestObject?
    dynamic var new: NewObject?
}

class TestObject: Object{
    dynamic var test = ""
}

class NewObject: Object{
   dynamic var test = ""
}


func deleteUser(){
    guard let realm = self.realmInstance else{
        return
    }
    guard let user = Array(realm.objects(UserObject.self)).first else{
        return
    }
    do{
        try realm.write {
            if let session = user.session{
                if let test = session.test{
                    realm.delete(test)
                }
                if let new = session.new{
                    realm.delete(new)
                }
                realm.delete(session)
            }
            realm.delete(user)
        }
    }catch{

    }
}