2017-07-11 62 views
2

当我试图增加currentNumberAdmin我得到:无法转换'UILabel!'类型的值预期参数“类型INOUT字符串”

cannot convert value of type 'UILabel!' to expected argument 'type in out String'

class adminPanel: UIViewController { 

    @IBOutlet weak var currentNumberAdmin: UILabel!      

    @IBAction func nextCurrent(_ sender: UIButton) { 
     let database = FIRDatabase.database().reference() 
     database.child("current").observe(FIRDataEventType.value, with: { (snapshot) in 

      self.currentNumberAdmin.text = snapshot.value as! String 
      currentNumberAdmin += String(1) 
     }) 

    } 
} 

有谁知道我可以转换和正确地增加currentNumberAdmin

+0

为什么要向视图添加字符串?你想达到什么目的? –

回答

0

这是因为此行而崩溃:currentNumberAdmin += String(1)。您正试图将字符串值添加到UILabel值,该值无效。你实际上是在告诉编译器将一个UILabel指定为currentNumberAdmin,以将UILabel添加到字符串中,编译器不知道该如何执行,因此是异常消息。

这并不完全清楚你为什么试图设置标签的文本两次:一次与snapshot.value,然后再次在下一行。如果你想要做的是将标签的文本设置为快照值+ 1,请执行如下操作:

@IBAction func nextCurrent(_ sender: UIButton) { 
    let database = FIRDatabase.database().reference() 
    database.child("current").observe(FIRDataEventType.value, with: { (snapshot) in 

     var strVal = Int(self.currentNumberAdmin.text)! 
     strVal += 1 
     self.currentNumberAdmin.text = String(strVal) 
    }) 

} 
+0

对不起,没有提到snapshot.value属于任何? –

+0

当我尝试将它转换为int时,我得到这个错误:无法用类型'(任何?)'的参数列表类型'int'调用初始值设定项' –

+0

@EliasKnudsen如果您只是尝试增加文字每次1,你只需要每次来回施放数值。我已更新我的示例以反映这一点。一个警告是,如果currentNumberAdmin.text包含非数字值,这将会崩溃。例如。如果标签包含“hi”,它会崩溃,但如果它包含“0”,它将按预期工作。 –

相关问题