Swift4中NSNumber转String及NSNumber数组转String数组适配UITableView
嘿,我来帮你搞定这两个Swift 4里的转换问题,顺便解决UITableView的显示需求~
1. 将NSNumber转换为String(Swift 4)
在Swift 4里把NSNumber转成String有两种常用方式,按需选择就行:
方式一:直接用NSNumber的stringValue属性
这是最简单的方式,直接获取NSNumber的字符串表示:
let myNumber: NSNumber = 68.208983 let stringResult = myNumber.stringValue // stringResult的值是 "68.208983"
方式二:用NumberFormatter格式化输出(推荐需要控制格式时使用)
如果需要自定义显示格式(比如保留指定小数位数、添加千分位分隔符等),用NumberFormatter更灵活:
let myNumber: NSNumber = 68.208983 let formatter = NumberFormatter() formatter.numberStyle = .decimal // 设置为十进制格式 formatter.maximumFractionDigits = 2 // 保留两位小数 formatter.minimumFractionDigits = 1 // 至少保留一位小数 if let formattedString = formatter.string(from: myNumber) { print(formattedString) // 输出 "68.21" }
2. 将NSNumber数组转换为String数组并在UITableView中显示
针对你提供的示例数组,我们可以通过map或者compactMap快速完成转换,然后在UITableView的代理方法里赋值给cell:
步骤1:将Double数组转成NSNumber数组(如果你的原始数据是Double类型)
// 你的示例数组 let originalDoubleArray = [68.208983, 6.373902, 1.34085, 3.974012, 110.484001, 61.380001, 1.325202, 0.8501030000000001, 0.8501030000000001, 0.8501030000000001, 3.647296, 1.28503] // 转换为NSNumber数组 let nsNumberArray = originalDoubleArray.map { NSNumber(value: $0) }
步骤2:将NSNumber数组转成String数组
方式一:直接转换(不格式化)
let stringArray = nsNumberArray.map { $0.stringValue }
方式二:格式化转换(自定义显示样式)
let formatter = NumberFormatter() formatter.maximumFractionDigits = 3 // 保留三位小数 // 用compactMap过滤掉转换失败的情况(虽然NSNumber转String很少失败,但更安全) let formattedStringArray = nsNumberArray.compactMap { formatter.string(from: $0) }
步骤3:在UITableView中显示
在tableView(_:cellForRowAt:)代理方法里,直接取数组对应位置的字符串赋值给cell的textLabel:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { // 假设你的cell重用标识符是"NumberCell" let cell = tableView.dequeueReusableCell(withIdentifier: "NumberCell", for: indexPath) // 用格式化后的数组赋值 cell.textLabel?.text = formattedStringArray[indexPath.row] return cell }
内容的提问来源于stack exchange,提问作者SDK
相关产品推荐
相关产品推荐

