2016-06-19 17 views
2

私はrealmにいくつかのチャットデータを保存しました。そこでは、パフォーマンステストのために> 40k個のオブジェクトを追加しました。クエリは高速ですが、削除には時間がかかりすぎてUIがフリーズします。多くのオブジェクトを削除するRealm.ioが長すぎます

static func deleteMessagesForChatId(chatId: String) { 
    dispatch_async(dispatch_queue_create("background", nil)) { 

     let realm = try! Realm() 

     let realmChatMessages = realm.objects(RealmChatMessage).filter("chatId = '\(chatId)'") 

     try! realm.write { 
      realm.delete(realmChatMessages) 
      print("message deleted from realm") 
     } 
    } 
} 

答えて

2

realm.writeを使用して試してみてください:

realm.beginWrite() 

realm.delete(realmChatMessages) 

try! realm.commitWrite() 
+0

ありがとうございますが、違いは何ですか? – MJQZ1347

+0

これは、リストを反復処理し、トランザクション内で一度に1つのオブジェクトを削除するのに対して、すべての削除に対して1つのトランザクションを作成します。 – John

+0

トランザクションは、バックグラウンドスレッドで実行することを意味しますか?だから私はそれが自分で動くと宣言していないのですか? – MJQZ1347

関連する問題