Realm数据库读取数据时的处理:每次加载数据时,都将原有的数据删除,重新读取模型中的数据

本文介绍了如何在使用Realm数据库时,每次加载数据时删除原有广告数据,然后从模型中重新获取并添加新数据。通过Alamofire请求数据,成功后调用`deleteAllADItem()`删除所有广告项,再使用`addNewMainADItemInRealm()`将新数据写入Realm,并更新UI显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Realm数据库读取数据时的处理:每次加在数据时,都将原有的数据删除,重新读取模型中的数据


/// 加载上方滚动广告

    func loadADData(){

        Alamofire.request(Router.chooseViewAdList(parameters:nil)).responseJSON { [unownedself] responses in


            if responses.result.isFailure

            {

                WDAlert.alertSorry(message:"网络异常", inViewController:self)

                // 加载失败,使用旧数据

                return

            }

            

            

            let json = responses.result.value

            let result =JSON(json!)

            deleteAllADItem()

            addNewMainADItemInRealm(result["data"])

            // 加载成功,使用新数据

            self.adData =getADItemInRealm(self.realm)

            self.cycleView?.imageURLStringsGroup = self.realm.objects(MainADItem.self).map { item -> Stringin

                return item.path

            }

            

        }

    }




////////////////////////////////////////////////////////////////////////

func addNewMainADItemInRealm(_ json :JSON)

{

    let jsonArr = json.arrayValue

    

    guardlet realm = try?Realm() else

    {

        return

    }

    

    for itemin jsonArr {

        

        let model =MainADItem()

        model.url = item["url"].stringValue

        model.type = item["type"].intValue

        model.title = item["title"].stringValue

        model.path = item["path"].stringValue

        model.id = item["id"].intValue

        model.createDate = item["createDate"].doubleValue

        model.modifyDate = item["modifyDate"].doubleValue

      

        try! realm.write({

            realm.add(model)

        })

    }

}


////////////////////////////////////////////////////


    // 广告数据

    fileprivatelazy var adData:Results<MainADItem> = {

        returngetADItemInRealm(self.realm)

    }()


///////////////////////////////////////////////////////////////////


func getADItemInRealm(_ realm :Realm) -> Results<MainADItem>

{

    let items = realm.objects(MainADItem.self)

    return items

    

}


///////////////////////////////////////////////////////////////////

func deleteAllADItem()

{

    deleteAllObject(MainADItem.self)

}


// MARK: - 公用的方法


// 删除某一个对象的所有数据

func deleteAllObject(_ objectType:Object.Type)

{

    if let realm = try?Realm() {

        let items = realm.objects(objectType)

        

        try! realm.write({

            realm.delete(items)

        })

    }

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值