swift - 如何在 Swift 上将 Realm 数据转换为 Json? Realm 版本 10.11.0

标签 swift realm

直到 Realm 版本 10.7.6 之前,我可以使用下面的代码转换为字典,然后转换为 json,但是 ListBase 类不再存在。

extension Object {
func toDictionary() -> NSDictionary {
    let properties = self.objectSchema.properties.map { $0.name }
    let dictionary = self.dictionaryWithValues(forKeys: properties)
    let mutabledic = NSMutableDictionary()
    mutabledic.setValuesForKeys(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 { /*Cannot find type 'ListBase' in scope*/
            var objects = [AnyObject]()
            for index in 0..<nestedListObject._rlmArray.count  {
                let object = nestedListObject._rlmArray[index] as! Object
                objects.append(object.toDictionary())
            }
            mutabledic.setObject(objects, forKey: prop.name as NSCopying)
        }
    }
    return mutabledic
}

let parameterDictionary = myRealmData.toDictionary()
guard let postData = try? JSONSerialization.data(withJSONObject: parameterDictionary, options: []) else {
  return 
}

最佳答案

List 现在显然继承自 RLMSwiftCollectionBase,因此您可以检查它。另外,这是 swift 。使用 [String: Any] 而不是 NSDictionary

extension Object {
    func toDictionary() -> [String: Any] {
        let properties = self.objectSchema.properties.map { $0.name }
        var mutabledic = self.dictionaryWithValues(forKeys: properties)
        for prop in self.objectSchema.properties as [Property] {
            // find lists
            if let nestedObject = self[prop.name] as? Object {
                mutabledic[prop.name] = nestedObject.toDictionary()
            } else if let nestedListObject = self[prop.name] as? RLMSwiftCollectionBase {
                var objects = [[String: Any]]()
                for index in 0..<nestedListObject._rlmCollection.count  {
                    let object = nestedListObject._rlmCollection[index] as! Object
                    objects.append(object.toDictionary())
                }
                mutabledic[prop.name] = objects
            }
        }
        return mutabledic
    }
}

关于swift - 如何在 Swift 上将 Realm 数据转换为 Json? Realm 版本 10.11.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68500497/

相关文章:

ios - Realm Object 子类的实例在初始化时为 null

node.js - 打开在另一个 .JS 文件中定义的 Realm-JS

ios - AppDelegate 中的 Swift UITabbar Shadow

swift - 安装 KDCircularProgress Xcode 9 时遇到问题

swift - 如何使用 NSComparator 组织解析查询? swift

java - 如何从数据库方案中的特定 Realm 文件中排除 Realm 模型类?

android - 我如何通过 Objective-C 在 Android 上使用 Realm 数据库?

ios - 如何将 TableView 的刷新控制实现为常用功能

swift - 以编程方式创建贴纸包,将 UICollectionViewCell 转换为 MSStickerView 时出现问题

swift - 如何删除所有对象并停止对 Realm 数据库的所有写入?