【发布时间】:2019-03-12 03:56:22
【问题描述】:
我目前有一个函数,它根据一些初步信息从 firebase 获取图像,在与图像相同的树级别是时间戳值(对于每个图像)。我一直无法获得价值,只能获得Optional(123131.432432),这当然不是我需要的。
功能如下:
func fetchAllPostImages() {
print("fetchAllPostImages function")
self.ref.child("Posts").child(self.userID).child(self.postNum).child("Images").observe(.childAdded, with: { snapshot in
var snapshotUrl = snapshot.childSnapshot(forPath: "ImageUrl")
var timeStampData = snapshot.childSnapshot(forPath: "timeStamp").value
print("fhdsjaklhfkjdsfksahdjksfjlashfkljdhs")
print(snapshot.childSnapshot(forPath: "ImageUrl"))
print(snapshot.childSnapshot(forPath: "timeStamp").value, "timestamp123")
print(snapshotUrl.value as? [String: String], "value")
if let urlValue = snapshotUrl.value {
print("jkdhsjbbvcbcbcbccbbbbbbbbbbbbbbb")
let snapShotValue = [ "ImageUrl" : urlValue]
let timeStampVal = ["timeStamp" : timeStampData]
print(timeStampVal, "dsfaf")
for (_, value) in snapShotValue {
if let imageURL = URL(string: value as! String) {
print(imageURL, "image url here")
do {
let imageAsData = try Data(contentsOf: imageURL)
let image = UIImage(data: imageAsData)
var timeStamp = 0.0
self.arrayOfImgObj.append(Media(image: image!, timeStamp: timeStamp))
self.tableView.reloadData()
print(self.arrayOfImgObj.count, "array.count")
} catch {
print("imageURL was not able to be converted into data")
}
}
}
}
})
}
所以我能够执行以下操作,这似乎可行,但是在 tableView 中我看到与以前相同的 Optional(5421432.43214)。即使当我打印它时,它也是我需要的双重价值。
for (value, timeValue) in zip(snapShotValue.values, timeStampVal) {
if let imageURL = URL(string: value as! String) {
print(imageURL, "image url here")
do {
let imageAsData = try Data(contentsOf: imageURL)
let image = UIImage(data: imageAsData)
var timeStampValue = timeValue as! Double
print(timeStampValue, "fgsdfg")
let timeStamp: Double = timeStampValue
self.arrayOfImgObj.append(Media(image: image!, timeStamp: timeStamp))
self.tableView.reloadData()
print(self.arrayOfImgObj.count, "array.count")
} catch {
print("imageURL was not able to be converted into data")
}
}
}
如何将封装在可选项中的时间戳值转换为双精度值?
【问题讨论】:
-
这是一个可选的。就像您在您发布的代码中解开其他选项一样正确解开它。
-
@rmaddy 检查更新
-
564030781.136256 fgsdfg 是我打印值时得到的,但我在 tableView 中得到可选的东西
-
你在某个地方还有另一个可选的。调试你的代码。找出它来自哪里。然后拆开。顺便说一句 - 使用
as!是个坏主意。如果它为 nil,它将崩溃。 -
您可以在您的问题中发布您的 Firebase 数据的 sn-p 吗?你的时间戳和我的时间戳可能是两个不同的东西。此外,将来,请将您的代码减少到重现问题所需的最低限度。那里有很多垃圾代码,只会让它更难阅读。见How to create a Minimal, Complete, and Verifiable example。此外, let snapShotValue = [ "ImageUrl" : urlValue] 看起来 snapShotValue 是一个单独的 URL,但随后您对其进行迭代,这很奇怪。 snapShotValue 中的 (_, value)。代码非常混乱。
标签: ios swift firebase firebase-realtime-database