【发布时间】:2017-01-21 12:34:47
【问题描述】:
你好!首先,我将解释游戏的功能,然后是我的问题:
所以我正在制作一个应用程序,玩家可以在其中玩一个小游戏。 首先,他们会看到一个表格视图,其中显示了他们的名字。每个名字都是创建游戏房间的玩家的名字。
然后玩家选择一个游戏室进行游戏(仅允许 2 人),然后游戏将开始。游戏使用一个名为“阶段”的变量。这是我用来在 Firebase 数据库中存储数据的参考(代码如下)。我稍后会在应用程序中调用以获取当前游戏的“阶段”。
但是,当我更改引用的值时,它会为应用程序中的每个人更改它。所以无论你和谁比赛,如果一个人改变了价值,它会影响到所有人。那么,我该如何解决呢?
这就是我将数据存储到 Firebase 数据库的方式:
我首先创建引用以存储数据。
private lazy var currentPhaseRef: FIRDatabaseReference = FIRDatabase.database().reference().child("currentPhase")
private lazy var whoWonCurrentPhaseRef: FIRDatabaseReference = FIRDatabase.database().reference().child("whoWonCurrentPhase")
然后为了得到当前阶段,我观察它:
私有函数观察者CurrentPhase() {
currentPhase = currentPhaseRef.observe(.childAdded, with: { (snapshot) -> Void in
let phaseData = snapshot.value as! UInt
self.currentPhase = phaseData
})
}
我明白为什么这不起作用。它不起作用,因为我正在设置每个人都可以使用的值。
那么,我如何让每个用户的参考不同(例如:玩家 1 的 Did 是 123456,所以参考将是“123456CurrentPhase”)?这样,当他们玩游戏时,它会从个性化的参考名称中提取数据。但是我将如何与任一用户交流那是什么,以便他们都使用相同的参考?
另一种询问方式是:我如何将其设置为两个用户都可以使用 ONE 个性化代码从中提取数据的位置。强>
注意:选择单元格进行游戏的玩家和实际开始游戏的玩家是两个不同的 ViewControllers/Code 文件。所以我不担心格式化一个控制器以在任一端工作。 IE。当您创建游戏并选择游戏时,他们会将您发送到两个不同的控制器。
感谢您的反馈,如果您需要更多详细信息或有任何疑问,请告诉我。 :)
【问题讨论】:
标签: swift firebase firebase-realtime-database