web-dev-qa-db-ja.com

Swift4でNSNumberをStringに変換する方法は?

UITableViewに値を表示するために、NSNumberの配列を文字列の配列に変換する方法は?

cell.textlabel.text = ?

コード:

var a = [68.208983, 6.373902, 1.34085, 3.974012, 110.484001, 
         61.380001, 1.325202, 0.8501030000000001, 0.8501030000000001, 
         0.8501030000000001, 3.647296, 1.28503]
7
Dhanush Kumar S

追加するだけ

.stringValue

nSNumber変数に

20
Aviram Net

明示的に注釈を付けない場合、投稿したものからDoubleの配列になります。投稿した配列がそのままの場合、これが必要です。

let arrayOfDoubles = [68.208983, 6.373902, 1.34085, 3.974012, 110.484001, 61.380001, 1.325202, 0.8501030000000001, 0.8501030000000001, 0.8501030000000001, 3.647296, 1.28503]
let stringArrayOfDoubles = arrayOfDoubles.map { String($0) }

または、タイプに[NSNumber]として明示的に注釈を付ける場合、これが必要になります。

let arrayOfNumbers: [NSNumber] = [68.208983, 6.373902, 1.34085, 3.974012, 110.484001, 61.380001, 1.325202, 0.8501030000000001, 0.8501030000000001, 0.8501030000000001, 3.647296, 1.28503]
let stringArrayOfNumbers = arrayOfNumbers.map { $0.stringValue }
3
nayem

指定された値を文字列に変換します。指定された値がnilの場合、空の文字列を返します。

class func toString(_ anything: Any?) -> String {
    if let any = anything {
        if let num = any as? NSNumber {
            return num.stringValue
        } else if let str = any as? String {
            return str
        }
    }
    return ""

}

このメソッドをコピーして貼り付けるだけで、クラッシュの問題なく文字列に変換できますありがとうございます。

0
Nil Rathod

ユーザーに数値データを表示する場合は、数値フォーマッターを使用するのが最善です。そうすることで、ユーザーのロケールに基づいて、ユーザーが慣れ親しんでいるフォーマットに出力が適合します。また、数値を変更することなく、数値の表示方法(小数桁数、有効桁数、丸めなど)を構成できます。たとえば、2つの小数桁を持つ小数として数値をフォーマットする場合、フォーマッターを次のように構成します。

let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2

ユーザーのロケールに応じて、出力(千桁区切り、小数点区切り、および偶数桁(!))は異なります。

formatter.locale = Locale(identifier: "en")
formatter.string(from: 12345.6789) // 12,345.68
formatter.string(from: 0.12345)    // 0.12

formatter.locale = Locale(identifier: "sv")
formatter.string(from: 12345.6789) // 12 345,68
formatter.string(from: 0.12345)    // 0,12

formatter.locale = Locale(identifier: "hi")
formatter.string(from: 12345.6789) // १२,३४५.६८
formatter.string(from: 0.12345)    // ०.१२

formatter.locale = Locale(identifier: "ar")
formatter.string(from: 12345.6789) // ١٢٬٣٤٥٫٦٨
formatter.string(from: 0.12345)    // ٠٫١٢

他の数値スタイルを使用して、通貨、パーセント、序数などの他のタイプの数値データをフォーマットできます。

formatter.locale = Locale(identifier: "en")
formatter.numberStyle = .ordinal
formatter.string(from: 1) // 1st
formatter.string(from: 2) // 2nd
formatter.string(from: 3) // 3rd
formatter.string(from: 4) // 4th
0