2014-10-27 4 views
0

У меня есть массив, который содержит строки, т.е. массивОбъединить строки в Swift

я пытался объединить строку, но я получил сообщение об ошибке, как «строка не совпадает с Uint8»

var titleString:String! = "" 

for title in array { 
     titleString += "\(title)" 
} 
+1

Почему вы сделали эту строку необязательной? – gnasher729

+0

По ошибке. Я отредактировал мой вопрос –

+0

Это не сработало, потому что вы объявили 'titleAnswer' как неявно развернутый необязательный. Теперь, когда вы превратились в необязательный, он должен работать - см. Мой ответ ниже (есть также лучший способ конкатенации) – Antonio

ответ

4

Для сцепить все элементы массива строк, вы можете использовать метод reduce:

var string = ["this", "is", "a", "string"] 

let res = string.reduce("") { $0 + $1 } 

Первый параметр является начальная строка , который является пустым, а второй является замыканием, которое выполняется для каждого элемента массива. Закрытие получает 2 параметра: значение, возвращаемое на предыдущем шаге (или начальное значение, если это 1-й элемент), и значение текущего элемента.

Подробнее here

Добавление Я забыл явно ответить на ваш вопрос: конкатенация не работает, потому что вы заявили о titleString в качестве дополнительного - просто включить в не необязательной переменной, и он будет работать. Если вы все еще хотите использовать дополнительный, а затем использовать принудительный разворачивая при выполнении задания:

titleString! += "\(title)" 

Дополнение 2 Как было предложено @MartinR, есть еще один простой способ конкатенации:

join("", string) 
+0

Спасибо за объяснение. Оно работает. Я просто начал быстро учиться. Я не знаком с опциональным цепочкой. Будет копаться в нем. –

+2

'reduce()' причудливо, но простой 'join (" ", array)' будет делать также ... –

+0

еще один вопрос. Я хочу отобразить массив строк в нескольких строках в ячейке. Как я могу это сделать. вы можете мне вести? –

0

В Swift 3, это то, как вы соединяете элементы массива строк:

["this", "is", "a", "string"].joined(separator: "") 

Хотя, joined(separator:) действительно ориентирована на акт вставляя разделитель между строками. Сокращение еще более кратким:

["this", "is", "a", "string"].reduce("", +) 
Смежные вопросы