我尝试使用Firebase框架并在我的应用中使用它,但我遇到了一个问题,如何从firebase检索数据并将其保存在我自己的数组中。 Firebase结构非常简单,看起来像这样:
现在我的代码看起来像这样:
`var rootRef = Firebase(url: "https://mathgamepio.firebaseio.com/")
var array:[String]?
var count: Int = 0
override func viewDidLoad() {
super.viewDidLoad()
rootRef.observeEventType(.ChildAdded) { (snap: FDataSnapshot!) -> Void in
self.count++
let math = snap.value["math"] as! String
print(self.count)
print(math)
self.array?.append(math)
print(self.array)
print("--------")
}`
此操作的结果如下:
self.array.append
不起作用,始终为nil
。如何将这些数据添加到我自己的数组?
答案 0 :(得分:0)
您的数组似乎从未初始化,因此self.array?
将始终跳过append
。
一种解决方案是检查数组是否存在:
if (self.array?.append(math)) == nil {
self.array = [math]
}
可能有更多方法可以解决这个问题,但我修改了这个问题的答案:Adding elements to optional arrays in Swift
更简单的方法是在使用之前简单地创建数组:
var array:[String]?
var count: Int = 0
override func viewDidLoad() {
super.viewDidLoad()
self.array = [];
rootRef.observeEventType(.ChildAdded) { (snap: FDataSnapshot!) -> Void in
self.count++
let math = snap.value["math"] as! String
print(self.count)
print(math)
self.array?.append(math)
print(self.array)
print("--------")
}
}
或者根本不将数组标记为可选:
var array:[String] = []
var count: Int = 0
override func viewDidLoad() {
super.viewDidLoad()
rootRef.observeEventType(.ChildAdded) { (snap: FDataSnapshot!) -> Void in
self.count++
let math = snap.value["math"] as! String
print(self.count)
print(math)
self.array.append(math)
print(self.array)
print("--------")
}
}
TIL我学到了一些基本的Swift语法。 : - )