2017-02-02 12 views
0

I SessionObject(Object)の1つのプロパティを持つUserObject(Object)クラスが1つあり、SessionObjectに他のRealmオブジェクト(TestObject、NewObject)のプロパティがあります。 私は子供を削除するオブジェクトの親オブジェクトが正常に、バート・アクセスとアプリがクラッシュすることの後に:EXC_BAD_ACCESS(コード= EXC_I386_GPFLT)子オブジェクトを削除しようとするとクラッシュするオブジェクトタイプのオブジェクト

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{ 

    } 
} 

答えて

3

あなたはARC naming conventionsにして実行しているが、スウィフトのdynamicプロパティに適用されますクラス。現在、Realmは、ARCが特別に名前を付けたメソッドに期待するものに適合するアクセサメソッドを生成しません。その結果、プロパティ名がnewcopyまたはmutableCopyで始まるときにオブジェクトが二重削除されます。

+0

あなたは正しいです。プロパティ名を変更して問題を解決しました。 –

関連する問題