iOS Swift:无法将值types“__NSCFNumber”转换为“NSString”

我从我的Firebase数据库(JSON数据库)中检索数字值,然后将此数字显示到textField ,但是当我尝试显示该数字时出现此错误。

无法将值types“__NSCFNumber”转换为“NSString”

我怎样才能正确地将检索到的值转换为一个string,考虑到这个值可能会改变之间的string和数字,当我检索它。

这是我的代码:

 let quantity = child.childSnapshot(forPath: "quantity").value // Get value from Firebase // Check if the quantity exists, then add to object as string. if (!(quantity is NSNull) && ((quantity as! String) != "")) { newDetail.setQuantity(quantity: quantity as! String) } 

错误是说你的数量是Number ,你不能直接将数字转换为String ,请尝试这样的。

 newDetail.setQuantity(quantity: "\(quantity)") 

要么

 if let quantity = child.childSnapshot(forPath: "quantity").value as? NSNumber { newDetail.setQuantity(quantity: quantity.stringValue) } else if let quantity = child.childSnapshot(forPath: "quantity").value as? String { newDetail.setQuantity(quantity: quantity) } 

或者用单个if语句

 if let quantity = child.childSnapshot(forPath: "quantity").value, (num is NSNumber || num is String) { newDetail.setQuantity(quantity: "\(quantity)) } 

使用第二个和第三个选项,不需要检查零。

你也可以将你的NSNumber值转换成这样的string,它是传统的和基本的格式化string的方法

  newDetail.setQuantity(String(format: "%@", quantity)) 

Swift 4:

 let rollNumber:String = String(format: "%@", rollNumberWhichIsANumber as! CVarArg)