mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
41 lines
1.2 KiB
Swift
41 lines
1.2 KiB
Swift
//
|
|
// Object+Dictionary.swift
|
|
// Bark
|
|
//
|
|
// Created by huangfeng on 2022/10/20.
|
|
// Copyright © 2022 Fin. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import RealmSwift
|
|
|
|
extension Object {
|
|
func toDictionary() -> [String: AnyObject] {
|
|
let properties = self.objectSchema.properties.map { $0.name }
|
|
var dicProps = [String: AnyObject]()
|
|
for (key, value) in self.dictionaryWithValues(forKeys: properties) {
|
|
if let value = value as? ListBase {
|
|
dicProps[key] = value.toArray1() as AnyObject
|
|
} else if let value = value as? Object {
|
|
dicProps[key] = value.toDictionary() as AnyObject
|
|
} else if let value = value as? Date {
|
|
dicProps[key] = Int64(value.timeIntervalSince1970) as AnyObject
|
|
} else {
|
|
dicProps[key] = value as AnyObject
|
|
}
|
|
}
|
|
return dicProps
|
|
}
|
|
}
|
|
|
|
extension ListBase {
|
|
func toArray1() -> [AnyObject] {
|
|
var _toArray = [AnyObject]()
|
|
for i in 0 ..< self._rlmArray.count {
|
|
let obj = unsafeBitCast(self._rlmArray[i], to: Object.self)
|
|
_toArray.append(obj.toDictionary() as AnyObject)
|
|
}
|
|
return _toArray
|
|
}
|
|
}
|