gpt4 book ai didi

ios - 如何使用类返回 firebase 数据?

转载 作者:行者123 更新时间:2023-11-29 01:05:59 25 4
gpt4 key购买 nike

我有一个 UICollectionView,我在其中使用类填充数据。截至目前,我正在用虚拟数据填充它,如下面的代码所示。我试图用我的 Firebase 数据库中的数据替换这个虚拟数据。

import UIKit

class MrNobody
{
// MARK: - Public API
var title = ""
var description = ""
var numberOfMembers = 0
var numberOfPosts = 0
var featuredImage: UIImage!

init(title: String, description: String, featuredImage: UIImage!)
{
self.title = title
self.description = description
self.featuredImage = featuredImage
numberOfMembers = 1
numberOfPosts = 1
}

// MARK: - Private
// dummy data
static func createMrNobody() -> [MrNobody]
{
return [
MrNobody(title: "some text" , description: "some text", featuredImage: UIImage(named: "r1")!),
MrNobody(title: "some text" , description: "some text", featuredImage: UIImage(named: "r1")!),
MrNobody(title: "some text" , description: "some text", featuredImage: UIImage(named: "r1")!),

]
}
}

为了包含数据,我添加了 import Firebase,使用 let ref = Firebase(url: "my app url") 识别我的 Firebase 数据库并读取数据使用

 ref.observeEventType(.Value, withBlock: { snapshot in
print(snapshot.value)
}, withCancelBlock: { error in
print(error.description)
})

我可以读取子数据,但无法在函数的 return block 中使用它。理想情况下,我希望使用 enumerator = snapshot.childrenCount,并针对感兴趣的节点中的子节点数量重复使用 return 函数。

任何帮助/指导将不胜感激。

最佳答案

createMrNobody() 函数调用是同步的,当您从 Firebase 检索数据时,其行为方式不同。

Firebase 本质上是异步的,因此当您向它请求数据时,您必须等待该数据被检索后再进行处理。否则,处理代码将在 Firebase 准备好数据之前执行。

它不同于整个过程是同步的函数调用的 SQL 查询。

不确定这是否有帮助,但这里有一个示例:假设我们有一个存储人员的数组,我们需要从 Firebase 填充它。

我们先定义person类

class Person {
var title: NSString?
var aDescription: NSString?
}

和存储人的数组

var myArray = [Person]()

当您准备好从 Firebase 加载它们时,这将完成

func loadMyPeople() {

myUsersRef.observeSingleEventOfType(.Value, withBlock: { snapshot in

for child in snapshot.children {
let title = child.value["title"] as! String
let description = child.value["description"] as! String
let dude = Person()
dude.title = title
dude.aDescription = description
self.myArray.append(dude)
}

//after all your people are loaded in the array, print it's contents
// you could also reload a tableView here as well.
for dude in self.myArray {
print("email: \(dude.title!) desc: \(dude.description!)")
}
})
}

关于ios - 如何使用类返回 firebase 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36360927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com