所以我目前正在尝试获取我的Firebase数据库中“帖子”的数量,但由于某种原因,它说的金额等于一(这是真的),但然后在调用“postNumber”时重置自身。我也想将数据保存在数组中以备后用,所以我把它全部保存在一个数组中,而不是直接从数据库中读取数据,也不存储任何数据。将FirebaseDataSnapshot添加到数组作为字符串(Swift 3)
viewDidLoad中()函数
var postNumber = 0
override func viewDidLoad() {
super.viewDidLoad()
updateFeed()
print("PostNumber in ViewDidLoad: \(self.postNumber)") //equals 0
collectionView?.backgroundColor = .white
}
updateFeed功能
func updateFeed(){
let uid = FIRAuth.auth()?.currentUser?.uid
let ref = FIRDatabase.database().reference(fromURL: "https://firebaseio.com/")
ref.child("users").child(uid!).child("Posts").observe(.value, with: { (snapshot) in
for item in snapshot.children{
let snapshotValue = snapshot.value as? NSDictionary
var snapString = String(describing: item)
var snapInt = Int(snapString)
self.postCollection.append(snapString)
let firstName = (snapshot.value as! NSDictionary)["First Person"] as? String
print("SnapShot: \(snapString)") //gives proper data
self.postNumber = self.postCollection.count
print("PostNumber: \(self.postNumber)") //equals 1
print("PostSource: \(self.postCollection)")
}
})
print("Number of Posts (After Adding): \(self.postCollection.count)") //equals 0
collectionView?.reloadData()
}
难道你不能存储快照本身吗?快照是不可变的,所以丢失数据应该没有问题。为什么你需要把它变成一个字符串? –
你可以,但它不改变函数后调用数组长度 – Skiddswarmik