小编典典

iOS Swift:无法将值类型'__NSCFNumber'强制转换为'NSString'

swift

我正在从Firebase数据库(JSON db)中检索一个数字值,然后将此数字显示为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)
}

阅读 526

收藏
2020-07-07

共1个答案

小编典典

错误是说您的数量是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。

2020-07-07