#string #performance #swift
#строка #Производительность #swift
Вопрос:
Я пытался написать какой-нибудь код Swift, чтобы сравнить производительность с моим кодом Obj-C.
У меня есть массив (буфер) UnicodeScalar, который я хочу преобразовать в объект String.
let range = _peekBuffer[_peekBufferPos .. _peekBufferPos length]
var retval = ""
for c in range {
retval = Character(c)
}
return retval
Производительность ужасна по целому ряду причин, но я не нашел лучшего способа построения строк в Swift. Я собираюсь попробовать перейти к NSString, а затем, вероятно, к CFString (что немного разочаровывает, поскольку я пытаюсь писать на чистом Swift), но мне было интересно, сталкивался ли кто-нибудь с какими-либо другими вариантами «быстрого» создания строк.
Комментарии:
1. используйте
NSMutableString
. вы не сможете написать никакого полезного кода с помощью чистого Swift.2. Если вы пытаетесь выполнить какие-то конкретные действия, которые не выполняются должным образом, сообщите об ошибке .
Ответ №1:
Я не нашел способа преобразовать массив UnicodeScalars в строку, но вы можете преобразовать UnicodeScalars в массив символов, а затем массив символов в строку:
var characters = [Character]()
for unicodeScalar in range {
characters.append( Character(unicodeScalar) )
}
return String( characters )