【问题标题】:Converting all Realm Objects to Dictionary at once一次将所有领域对象转换为字典
【发布时间】:2017-03-06 03:33:40
【问题描述】:

我正在使用 Realm,并且我有一个 extension 用于将我的 Realm 模型转换为 Dictionary ,但我不知道如何一次转换我的所有 Realm 模型。我想知道如何一次在一个地方转换所有领域对象,以便我可以将该字典发送到 API。 这是我的领域对象模型和我使用的扩展:

class OrderItemList: Object {

dynamic var dateCreated = NSDate()
let orderItems = List<OrderItem>()
}

class OrderItem: Object {

dynamic var name = " "
dynamic var amount = 0
dynamic var internalUnique = Int()
dynamic var isCompleted = false
} 

扩展:

extension Object {
    func toDictionary() -> NSDictionary {
        let properties = self.objectSchema.properties.map { $0.name }
        let dictionary = self.dictionaryWithValuesForKeys(properties)

        let mutabledic = NSMutableDictionary()
        mutabledic.setValuesForKeysWithDictionary(dictionary)

        for prop in self.objectSchema.properties as [Property]! {
            // find lists
            if let nestedObject = self[prop.name] as? Object {
                mutabledic.setValue(nestedObject.toDictionary(), forKey: prop.name)
            } else if let nestedListObject = self[prop.name] as? ListBase {
                var objects = [AnyObject]()
                for index in 0..<nestedListObject._rlmArray.count  {
                    let object = nestedListObject._rlmArray[index] as AnyObject
                    objects.append(object.toDictionary())
                }
                mutabledic.setObject(objects, forKey: prop.name)
            }

        }
        return mutabledic
    }

}

【问题讨论】:

    标签: ios swift dictionary nsdictionary realm


    【解决方案1】:

    不幸的是,没有灵丹妙药可以将一批 Realm 对象转换为字典。您需要查询所需的对象,然后遍历每个对象以生成它的序列化版本。

    let realm = try! Realm()
    var objectDictionaries = [NSDictionary]()
    
    let allObjects = realm.objects(OrderItemList.self)
    for object in allObjects {
        let dictionary = object.toDictionary()
        objectDictionaries.append(dictionary)
    }
    

    希望能回答你的问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      相关资源
      最近更新 更多