我正在尝试打印出我从在线数据库返回的Optional NSArray中的第一个对象。什么都没打印出来。不知道如何将可选的NSArray打包成一个我可以索引的数组。现在只尝试打印出NSArray中的第一个值。
fireBaseRef.observeSingleEventOfType(.Value, withBlock: { snapshot in
if !snapshot.exists() { return }
for item in snapshot.children {
print("This is the child value of reference", item.value["reference"])
if let referenceObjects = item.value["reference"] {
print("This is the first value", referenceObjects[0]) //error is Anyobject? has no subscript members
}
}
})
我收到以下
This is the child value of track-titles Optional(<__NSArrayM0x618000049000>(
The Chainsmokers - Don't Let Me Down (Illenium Remix),
Flume - Say It ft. Tove Lo (Illenium Remix),
The Chainsmokers Ft. Halsey - Closer (GhostDragon Remix),
Major Lazer & Showtek - Believer,
Fire,
ONE DANCE -- DRAKE (feat. Wizkid & Kyla),
Let Me Love You - Justin Bieber (Trap Edit)
)
)
答案 0 :(得分:1)
根据您的代码,referenceObjects是NSDictionary,而不是NSArray。因此,当您请求referenceObjects [0]时,运行时将尝试并检索键0的值。
如果您想要检索NSArray,那么类似下面的内容应该有效:
if let referenceObjects = item.value["reference"] as? NSArray where !referenceObjects.isEmpty {
print("This is the first object: \(referenceObjects.first!)")
}
希望有所帮助。
答案 1 :(得分:-1)
快照作为可选的NSArray返回,因此如果此对象为零,则必须使用条件形式的向下转换。
if let referenceObjects = item.value["reference"] as? NSArray {
print(referenceObjects[0])
}