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)