Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 正在检索Firebase数据库字符串并将标签无效的字符串转换为整数_Ios_Swift_Firebase_Firebase Realtime Database_Integer - Fatal编程技术网

Ios 正在检索Firebase数据库字符串并将标签无效的字符串转换为整数

Ios 正在检索Firebase数据库字符串并将标签无效的字符串转换为整数,ios,swift,firebase,firebase-realtime-database,integer,Ios,Swift,Firebase,Firebase Realtime Database,Integer,将数据保存到Firebase并检索要在标签中显示的数据是可行的,但当我尝试向标签添加Int时,它会覆盖标签数据 我在标签上添加了 var pointscont=0 func addPoints(u points:NSInteger){ pointsCount+=点 pointsLabel.text=“\(self.pointscont)” } 然后,我将标签内容作为字符串保存到Firebase func saveToFirebase(){ 让userID=Auth.Auth().current

将数据保存到Firebase并检索要在标签中显示的数据是可行的,但当我尝试向标签添加
Int
时,它会覆盖标签数据

我在标签上添加了

var pointscont=0
func addPoints(u points:NSInteger){
pointsCount+=点
pointsLabel.text=“\(self.pointscont)”
}
然后,我将标签内容作为字符串保存到Firebase

func saveToFirebase(){
让userID=Auth.Auth().currentUser!.uid
let points:String=(“\(self.pointscont)”)
让savedScores=[“点”:点,
“废话”:废话,
“blahblah”:blahblah]
Database.Database().reference().child(“用户”).child(userID)。updateChildValue(savedCores,withCompletionBlock:
{
(错误,参考)在
如果let error=error
{
打印(错误。本地化描述)
返回
}
其他的
{
打印(“数据保存成功!”)
}
})
}
我从实时数据库中检索字符串并将其转换为Int

func retrieveFromFirebase(){
guard let userID=Auth.Auth().currentUser?.uid else{return}
Database.Database().reference().child(“用户”).child(用户ID).child(“点”).observeSingleEvent(of:.值){
(快照)
在里面
guard let points=snapshot.value as?字符串else{return}
设pointsString=点
如果let pointsInt=NumberFormatter().number(from:pointsString){
让retrievedPoints=pointsInt.intValue
self.pointsLabel.text=“\(检索点)”
}否则{
打印(“不工作”)
}
}
标签完美地显示了从数据库检索到的数据

然后,如果我尝试向标签添加更多点,它将删除检索到的数据并从0开始添加,就像标签显示为零一样

我整天都在寻找一个看似简单的问题的答案,但由于缺乏经验,我一直没能找到答案

我尝试过将所有内容分离,并将数据保存为整数,然后将数据恢复为整数,但问题似乎来自addPoints函数


请告诉我我做错了什么。

解决方案非常简单,只需在points函数中添加一个“if”语句

而不是

func addPoints(_ points: NSInteger) {
pointsCount += points
pointsLabel.text = "\(self.pointsCount)"
}
它需要是

func addPoints(_ points: NSInteger) {
    if let text = self.pointsLabel.text, var pointsCount = Int(text)
    {
        pointsCount += points
        pointsLabel.text = "\(pointsCount)"
    }
}

只是问一下---你为什么不直接使用字符串来标记而不是转换字符串->数字->整数->字符串?试着直接使用点。块中有更多的字符串,但即使我将它们分开并保存为整数,我也有同样的问题