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)
})
}
}