From effb8a616d8c2c73ede2d28cb27a39b446ec0d2b Mon Sep 17 00:00:00 2001 From: nixzhu Date: Thu, 3 Dec 2015 11:20:10 +0800 Subject: [PATCH] fix deleteConversation; use cascadeDeleteInRealm, cascadeDeleteInRealm --- Yep/Realm/Models.swift | 16 ++++------------ Yep/Services/YepServiceSync.swift | 2 +- .../ConversationViewController.swift | 4 ++++ 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/Yep/Realm/Models.swift b/Yep/Realm/Models.swift index 6445fc28..e6fa38dc 100644 --- a/Yep/Realm/Models.swift +++ b/Yep/Realm/Models.swift @@ -218,13 +218,9 @@ class Group: Object { // 级联删除关联的数据对象 - func cascadeDelete() { + func cascadeDeleteInRealm(realm: Realm) { - guard let realm = realm else { - return - } - - withFeed?.cascadeDelete() + withFeed?.cascadeDeleteInRealm(realm) if let conversation = conversation { realm.delete(conversation) @@ -748,11 +744,7 @@ class Feed: Object { // 级联删除关联的数据对象 - func cascadeDelete() { - - guard let realm = realm else { - return - } + func cascadeDeleteInRealm(realm: Realm) { attachments.forEach { realm.delete($0) @@ -1492,7 +1484,7 @@ func deleteConversation(conversation: Conversation, inRealm realm: Realm, needLe if let feed = conversation.withGroup?.withFeed { - feed.cascadeDelete() + feed.cascadeDeleteInRealm(realm) } let groupID = group.groupID diff --git a/Yep/Services/YepServiceSync.swift b/Yep/Services/YepServiceSync.swift index ed8e6cc1..8f9b9604 100644 --- a/Yep/Services/YepServiceSync.swift +++ b/Yep/Services/YepServiceSync.swift @@ -538,7 +538,7 @@ func syncGroupsAndDoFurtherAction(furtherAction: () -> Void) { } } else { - group.cascadeDelete() + group.cascadeDeleteInRealm(realm) } } diff --git a/Yep/ViewControllers/Conversation/ConversationViewController.swift b/Yep/ViewControllers/Conversation/ConversationViewController.swift index 273be5d4..5fa85f07 100644 --- a/Yep/ViewControllers/Conversation/ConversationViewController.swift +++ b/Yep/ViewControllers/Conversation/ConversationViewController.swift @@ -2130,10 +2130,14 @@ class ConversationViewController: BaseViewController { return } + realm.beginWrite() + deleteConversation(conversation, inRealm: realm, afterLeaveGroup: { afterLeaveGroup?() }) + let _ = try? realm.commitWrite() + NSNotificationCenter.defaultCenter().postNotificationName(YepConfig.Notification.changedConversation, object: nil) self?.navigationController?.popViewControllerAnimated(true)