Как конвертировать NSNumber в строку в Swift4? - PullRequest
0 голосов
/ 23 мая 2018

Как преобразовать массив NSNumber в массив строк для отображения значения в UITableView?

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]

Ответы [ 3 ]

0 голосов
/ 22 августа 2018

просто добавьте

.stringValue

в переменную NSNumber

0 голосов
/ 22 августа 2018

Если вы собираетесь отображать числовые данные пользователю, лучше использовать числовой форматер.Таким образом, ваши выходные данные будут адаптироваться к форматированию, к которому привыкли пользователи, и ожидают, основываясь на их локали.Он также позволяет вам настраивать представление чисел (количество цифр дроби, значащие цифры, округление и т. Д.) Без необходимости изменения чисел.Например, если вы хотите отформатировать число в виде десятичного числа с двумя дробными цифрами, вы должны настроить форматер следующим образом:

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 голосов
/ 23 мая 2018

Из того, что вы опубликовали, есть массив 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 }
...