Подтвердить что ты не робот

Предупреждение: "символы" устарели: используйте String или Substring напрямую

characters - свойство экземпляра String, устарело с Xcode 9.1 (beta)

Это/очень полезное свойство, чтобы получить подстроку из String, но не устаревать, а Xcode предлагает использовать substring. Я попытался проверить вопросы SO и учебные пособия для разработчиков Apple/рекомендации для них. Но не видел никакого решения/альтернативного, как предполагалось.

Вот предупреждение:

"символы" устарели: используйте String или Substring

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

У меня так много операций с строкой выполняются/обрабатываются с помощью свойства characters.

У кого-нибудь есть идея/информация об этом обновлении?

4b9b3361

Ответ 1

Swift 4 представил изменения в API-интерфейсе строки.
Вы можете использовать !stringValue.isEmpty вместо stringValue.characters.count > 0

для получения дополнительной информации вы получите образец из здесь

например,

let edit = "Summary"
edit.count   // 7

Ответ 2

Swift 4 vs Swift 3 примеры:

let myString = "test"

for char in myString.characters {print(char) } // Swift 3
for char in myString { print(char) } // Swift 4

let length = myString.characters.count // Swift 3
let length = myString.count // Swift 4

Ответ 3

Это предупреждение - это всего лишь вершина айсберга, там были лут строковых изменений, строки снова представляют собой набор персонажей, но у нас есть новые и классные подстроки:)

Это замечательно прочитать об этом: https://useyourloaf.com/blog/updating-strings-for-swift-4/

Ответ 4

Один из наиболее распространенных случаев манипулирования строками - это ответы JSON. В этом примере я создал расширение в приложении watch, чтобы удалить последние (n) символы объекта Bitcoin JSON.

Swift 3:

func dropLast(_ n: Int = 0) -> String {
    return String(characters.dropLast(n))

Xcode 9.1 Сообщение об ошибке:

'characters' устарел: используйте строку или подстроку напрямую

Xcode сообщает нам использовать строковую переменную или метод напрямую.

Swift 4:

func dropLast(_ n: Int = 0) -> String {
    return String(dropLast(n))
    }

Полное расширение:

extension String {
    func dropLast(_ n: Int = 0) -> String {
        return String(dropLast(n))
    }

    var dropLast: String {
        return dropLast()
    }
}

Вызов:

print("rate:\(response.USDRate)")
let literalMarketPrice = response.USDRate.dropLast(2)
print("literal market price: \(literalMarketPrice)")

Консоль:

//rate:7,101.0888 //JSON float
//literal market price: 7,101.08 // JSON string literal

Дополнительные примеры:

  • print("Spell has \(invisibleSpellName.count) characters.")
  • return String(dropLast(n))
  • return String(removeLast(n))

Документация:

Часто вы будете использовать общие методы, такие как dropLast() или removeLast() или count, поэтому здесь явная документация Apple для каждого метода.

droplast()

removeelast()

подсчет символов