模型中RealmSwift与SwiftJSON的结合

这个博客展示了如何在iOS应用中使用RealmSwift数据库库与SwiftJSON解析JSON数据。通过创建`MainADItem`、`NewFood`和`FoodRecmmand`数据模型,将JSON数组转换为 Realm 对象,并提供了添加、获取和删除 Realm 中数据的函数。

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

import UIKit

import RealmSwift

import SwiftyJSON



//let realmQueue = DispatchQueue(label: "com.wangju.WDDayDayCook", attributes: dispatch_queue_attr_make_with_qos_class(DispatchQueue.Attributes(), DispatchQoS.QoSClass.utility, 0))



// :MARK: - 广告数据的处理


/// 广告模型

class MainADItem: Object

{

    dynamic var createDate: TimeInterval = Date().timeIntervalSince1970

    dynamic var id :Int = 0

    dynamic var modifyDate: TimeInterval = Date().timeIntervalSince1970

    dynamic var path :String = ""

    dynamic var title :String = ""

    dynamic var type: Int = 0

    dynamic var url :String = ""  

}


func deleteAllADItem()

{

    deleteAllObject(MainADItem.self)

}


func addNewMainADItemInRealm(_ json :JSON)

{

    let jsonArr = json.arrayValue

    

    guard let realm = try? Realm() else

    {

        return

    }

    

    for item in 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)

        })

    }

}


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

{

    let items = realm.objects(MainADItem.self)

    return items

    

}


// :MARK: - 每日新品数据的处理

/// 每日新品模型

class NewFood: Object {

    

    dynamic var detailsUrl: String = ""

    dynamic var clickCount: Int = 0

    dynamic var id: Int = 0

    dynamic var categoryID:Int = 0

    dynamic var foodDescription: String = ""

    dynamic var releaseDate: String = ""

    dynamic var type: String = ""

    dynamic var screeningId:String = ""

    dynamic var indexUrl:String = ""

    dynamic var maketime:String = ""

    dynamic var name: String = ""

    dynamic var shareCount: Int = 0

    dynamic var favorite: Bool = false

    dynamic var imageUrl: String = ""

    dynamic var title: String = ""

    dynamic var createDate: TimeInterval = Date().timeIntervalSince1970

    dynamic var modifyDate: TimeInterval = Date().timeIntervalSince1970

    

}


func addNewFoodItemInRealm(_ json :JSON)

{

    let jsonArr = json.arrayValue

    

    guard let realm = try? Realm() else

    {

        return

    }

    

    for item in jsonArr {

        

        let model = NewFood()

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

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

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

        model.foodDescription = item["description"].stringValue

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

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

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

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

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

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

        model.shareCount = item["detailsUrl"].intValue

        model.favorite = item["detailsUrl"].boolValue

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

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

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

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


        try! realm.write({

            realm.add(model)

        })

    }

}


func getNewFoodItemInRealm(_ realm : Realm) -> Results<NewFood>

{

    let items = realm.objects(NewFood.self)

    return items

    

}


class FoodRecmmand: Object

{

    dynamic var foodDescription: String = ""

    dynamic var favorite: Bool = false

    dynamic var recipe_type: String = ""

    dynamic var click_count :Int = 0

    dynamic var favorite_count: Int = 2

    dynamic var image_url: String = ""

    dynamic var rid: String = ""

    dynamic var title: String = ""

    dynamic var recommend_type: Int = 0

    dynamic var recipe_id: Int = 0

    dynamic var group_id: Int = -2

    dynamic var share_count: Int = 0

    dynamic var str_date: TimeInterval = Date().timeIntervalSince1970

}


func addFoodRecmmandItemInRealm(_ json :JSON)

{

    let jsonArr = json.arrayValue

    

    guard let realm = try? Realm() else

    {

        return

    }

    

    jsonArr.forEach { item in

        

        let model = FoodRecmmand()

        

        model.foodDescription = item["description"].stringValue

        model.favorite = item["favorite"].boolValue

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

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

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

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

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

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

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

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

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

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

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

        

        try! realm.write({

            realm.add(model)

        })

    }



}

func getFoodRecmmandListInRealm(_ realm : Realm) -> Results<FoodRecmmand>

{

    let items = realm.objects(FoodRecmmand.self)

    return items

}


func getRecmmandListInRealm(_ realm : Realm,recommendType:Int) -> Results<FoodRecmmand>

{

    let items = getFoodRecmmandListInRealm(realm)

    let predicate = NSPredicate(format:"recommend_type = %d",recommendType)

    return items.filter(predicate)

}


func getThemeListInRealm(_ realm : Realm) -> Results<FoodRecmmand>

{

    return getRecmmandListInRealm(realm, recommendType: 2)

}


func getRecipeListInRealm(_ realm : Realm) -> Results<FoodRecmmand>

{

    return getRecmmandListInRealm(realm, recommendType: 1)

}


func getRecipeDiscussListInRealm(_ realm : Realm) -> Results<FoodRecmmand>

{

    return getRecmmandListInRealm(realm, recommendType: 3)

}






// MARK: - 公用的方法


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

func deleteAllObject(_ objectType: Object.Type)

{

    if let realm = try? Realm() {

        let items = realm.objects(objectType)

        

        try! realm.write({

            realm.delete(items)

        })

    }

}


// 获取某一个模型的数据


func getObjectItemsInRealm(_ objectType: Object.Type,realm : Realm) -> Results<Object>

{

    let items = realm.objects(objectType)

    return items

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值