0

Alamofire によって提供される ObjectMapper を使用してオブジェクトをマップし、それらを Realm に保持します。

すべてが正常に機能しています。しかし、Realm に存在するが Web サービスで削除されたオブジェクトを削除するにはどうすればよいでしょうか?

更新:以下の回答に基づいて、現在このコードで終了しています:

 if let overviewItemsArray = response.result.value{

                    do{
                        try self.realm.write{
                            self.realm.delete(self.realm.objects(OverviewItem))
                            self.realm.add(overviewItemsArray, update: true)
                        }
                    }
                    catch let err as NSError {
                        logger.error("Error with realm: \(err.localizedDescription)")
                    }
                    overviewItemsAsList.removeAll()
                    overviewItemsAsList.appendContentsOf(self.realm.objects(OverviewItem)
                        .sorted("sortOrder", ascending: true))
                    successHandler(overviewItemsAsList)
                }

おそらく、誰かがこれを改善する方法をさらに入力しています。このタイプのオブジェクトが 10 個あります。しかし、他のオブジェクトでは 1500 個のアイテムを取得します。

4

3 に答える 3

0

あなたは出来る:

-updated_at フィールドを使用し、id を介してそのフィールドを更新します。その後、更新されていないすべてのオブジェクトを削除するか、

-すべてのオブジェクトを削除してから、新しいオブジェクトを挿入します (高価です。私はそのようなことはしません)。

特に大量のデータがある場合は、最初のオプションを使用する必要があると思います。Web サービスから応答を取得したら、それぞれを調べて、データベース内の対応するレコードを NSDate() で更新し、その後、「古いオブジェクトを削除します。 "。これはサーバーからの updated_at ではなく、ローカル ストレージであることに注意してください。

データ量が少なく、高速で安価であることが確実な場合は、もう 1 つの方法で問題ありません。

于 2016-05-23T18:45:57.130 に答える