我能够使用此功能正确地从Firebase中提取JSON数据。显示从Firebase中的JSON解析的数据。无法摆脱可选的字符串打印
func makeLeaderboard() {
let scoresRef = Firebase(url: "https://URL.firebaseio.com/High%20Scores")
scoresRef.observeEventType(.Value, withBlock: { snapshot in
var newItems = [LeaderboardItem]()
for item in snapshot.children {
let leaderboardItem = LeaderboardItem(snapshot: item as! FDataSnapshot)
newItems.append(leaderboardItem)
print(item)
}
self.leaderboardItems = newItems
})
}
JSON数据有很多对象,看起来像这样:
Snap (-KCIjxAHgGrNnBbL7jsI) {
".priority" = "-11";
Date = "1457398993.668789";
Name = brendan;
Score = 11;
UUID = "BD561F1C-72A8-4A01-A71A-850682E49D61";
}
Snap (-KC3MktapH6Mebw2sAUe) {
".priority" = "-10";
Date = "1457140993.692581";
Name = brendan;
Score = 10;
UUID = "BD561F1C-72A8-4A01-A71A-850682E49D61";
} etc etc etc
我创建从这些快照leaderboardItem对象。这是基本结构:
import Foundation
import Firebase
struct LeaderboardItem {
let key: String!
var score: String!
let name: String!
let ref: Firebase?
// Initialize from arbitrary data
init(name: String, score: String, completed: Bool, key: String = "") {
self.key = key
self.name = name
self.score = score
self.ref = nil
}
init(snapshot: FDataSnapshot!) {
key = snapshot.key!
name = snapshot.value["Name"]! as! String!
score = String(snapshot.value["Score"]) //String(snapshot.value["Score"]!)
ref = snapshot.ref!
}
func toAnyObject() -> AnyObject {
return [
"name": name,
"score": score,
]
}
}
当我去尝试显示leaderboardItem数组对象的得分属性,显示为可选。无论我如何强制解包属性,它仍然显示可选项。
我使用此代码显示标签:
func populateLeaderBoard() {
leaderboardScore1.text = "\(leaderboardItems[0].score!) \(leaderboardItems[0].name)"
leaderboardScore2.text = "\(leaderboardItems[1].score) \(leaderboardItems[1].name)"
leaderboardScore3.text = "\(leaderboardItems[2].score) \(leaderboardItems[2].name)"
leaderboardScore4.text = "\(leaderboardItems[3].score) \(leaderboardItems[3].name)"
leaderboardScore5.text = "\(leaderboardItems[4].score) \(leaderboardItems[4].name)"
}
你需要解开的值,例如, leaderboardItems [1] .score! –
你能告诉我们如何填充你的'leaderboardItems'数组吗? – Chris
穆罕默德,如果我这样做,没有什么变化。你可以看到我已经用leaderboardItems [0] .score做到了!并且我仍然在输出 – jakhamma