Ошибка Не удается вызвать инициализатор для типа «String» со списком аргументов типа «(Int64?)» с оператором нулевого объединения

Я получаю сообщение об ошибке "Не удается вызвать инициализатор для типа "String" со списком аргументов типа "(Int64?)"" с оператором нулевого объединения.

Есть похожие вопросы по переполнению стека, но они не дали мне нужного решения.

Мой код с ошибками в комментариях:

let cell = tableView.dequeueReusableCell(withIdentifier: "countCell", for: indexPath)
cell.textLabel?.text = String(detailItem?.count) ?? "1" // Cannot invoke initializer for type 'String' with an argument list of type '(Int64?)'

let cell = tableView.dequeueReusableCell(withIdentifier: "countCell", for: indexPath)
cell.textLabel?.text = String(Int(detailItem?.count)) ?? "1" // Cannot invoke initializer for type 'Int' with an argument list of type '(Int64?)'

let cell = tableView.dequeueReusableCell(withIdentifier: "countCell", for: indexPath)
cell.textLabel?.text = String(Int(detailItem!.count)) ?? "1" // Cannot invoke initializer for type 'Int' with an argument list of type '(Int64?)'

let cell = tableView.dequeueReusableCell(withIdentifier: "countCell", for: indexPath)
cell.textLabel?.text = String(detailItem?.count ?? "1") // Cannot convert value of type 'String' to expected argument type 'Int64'

person Daniel Brower    schedule 02.07.2019    source источник
comment
Как насчет let string = String(intValue) — как и для других целых чисел и типов с плавающей запятой?   -  person Martin R    schedule 02.07.2019
comment
Я попробовал let string = String(int64Value) и получаю сообщение об ошибке.   -  person Daniel Brower    schedule 02.07.2019
comment
Это была бы полезная информация в вопросе, желательно минимально воспроизводимый пример.   -  person Martin R    schedule 02.07.2019
comment
Каково значение int64Value?   -  person PGDev    schedule 02.07.2019
comment
@MartinR Я как раз добавлял эту информацию. Я разместил, а затем отредактировал. Не ожидал, что так быстро получу ответы.   -  person Daniel Brower    schedule 02.07.2019
comment
@PGDev int64Value = 1.   -  person Daniel Brower    schedule 02.07.2019
comment
Попробуйте код, который я добавил в ответ. Кроме того, опубликуйте ошибку, которую вы получаете.   -  person PGDev    schedule 02.07.2019
comment
@PGDev Хорошо. Я работаю над этим. Детская площадка очень медленная. Я пробую это на Playground.   -  person Daniel Brower    schedule 02.07.2019
comment
Что печатает print(type(of: int64Value))?   -  person vacawama    schedule 02.07.2019
comment
'(Int64?)' в сообщении об ошибке указывает, что detailItem?.count является необязательным целым числом, его необходимо сначала развернуть.   -  person Martin R    schedule 02.07.2019
comment
Обновил ответ в соответствии с вашим кодом. Попробуй это.   -  person PGDev    schedule 02.07.2019
comment
Я больше не использую Playground, но мой Mac mini работает медленно.   -  person Daniel Brower    schedule 02.07.2019


Ответы (2)


Вы можете просто сделать,

let int64Value: Int64 = 123
let str = String(int64Value)

Изменить:

Поскольку detailItem?.count равно optional, вам нужно развернуть его перед передачей в String инициализатор. Вы можете использовать оператор объединения nil, чтобы развернуть и указать значение по умолчанию, т. е.

cell.textLabel?.text = String(detailItem?.count ?? 1)
person PGDev    schedule 02.07.2019
comment
Это не работает. Я пробовал. - person Daniel Brower; 02.07.2019
comment
Добавьте код, который не работает. - person PGDev; 02.07.2019
comment
Обновлен код соответствующим решением. - person PGDev; 02.07.2019
comment
Похоже, это работает. Сообщение об ошибке исчезло. Xcode все еще строится. Мой Mac mini сейчас работает очень медленно. - person Daniel Brower; 02.07.2019
comment
Отлично, примите, если ответ сработал. Удачного кодирования..???? - person PGDev; 02.07.2019

введите здесь описание изображения

let tmp = Int64(10)
print(String(tmp))
person Divyesh Gondaliya    schedule 02.07.2019
comment
Это не работает. Я пробовал. - person Daniel Brower; 02.07.2019
comment
это работает на моей игровой площадке - person Divyesh Gondaliya; 02.07.2019