我正在从Firebase数据库(JSON db)中检索一个数字值,然后将此数字显示为textField,尽管尝试显示该错误时会遇到此错误。
textField
无法将值类型’__NSCFNumber’强制转换为’NSString’
考虑到在我检索到的值在字符串和数字之间可能会发生变化,我如何正确地将检索到的值转换为字符串。
这是我的代码:
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,尝试这样。
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)) }
使用第二和第三个选项,无需检查nil。