0

我是 CosmicMind 的新手,对数据处理有疑问。

在 CosmicMind CardTableView Sample 中,数据是从 Entity 类型的 SampleData 中读取的。

Q1:有没有办法可以将我的 Firebase 数据加载到实体?如果是这样,该怎么做?看起来应该不难,因为它已经是 JSON 了。我正在使用 Swift 3.2

Q2:有没有办法模态实体?

非常感谢!!

4

1 回答 1

0

欢迎来到 CosmicMind :)

最简单的方法是创建一个导入函数,该函数接收您的 JSON 数据并将键值对映射到实体中的属性。如果 Firebase 中有类型说明符,那么您可以将其设置为实体类型。我不使用 Firebase,所以我无法 100% 描述设置,但这里有一个示例说明你会做什么,假设 Firebase 给你一个唯一的 ID。

func importFirebase(data: [[String: Any]]) {
    let graph = Graph()
    let search = Search<Entity>(graph: graph).for(types: "User")
    let users = search.sync()
    var index = [Int: Entity]()

    for user in users {
        if let id = user["id"] as? Int {
            index[id] = user
        }
    }

    for json in data {
        if let id = json["id"] as? Int {
            var entity: Entity

            if nil == index[id] {
                entity = Entity(type: "User")
            } else {
                entity = index[id]!
            }

            for (k, v) in json {
                entity[k] = v
            }
        }
    }

    graph.sync()
}

let data = [
    ["type": "User", "id": 1, "name": "Daniel", "age": 33],
    ["type": "User", "id": 2, "name": "Adam", "age": 28],
    ["type": "User", "id": 3, "name": "Sarah", "age": 23]
]

importFirebase(data: data)

这不一定是最佳解决方案,但它应该给你一个想法。

希望对你有帮助,祝一切顺利!

于 2017-05-16T00:31:38.683 回答