предупреждение: 'символы' является устаревшим: пожалуйста, используйте строку или подстроку напрямую
символы - свойство экземпляра String, устарело с помощью Xcode 9.1
Это было очень полезно получить подстроку из строки с помощью characters
свойство но теперь оно устарело и Xcode предлагает использовать substring
. Я попытался проверить так Вопросы и Apple developer tutorials / guidelines для того же самого. Но не видел никакого решения / альтернативы, как было предложено.
вот предупреждение:
'символы' является устаревшим: пожалуйста, используйте строку или подстроку
у меня так много строковых операций выполняются / обрабатываются с помощью свойства characters
.
у кого-нибудь есть идеи/информация об этом обновлении?
6 ответов:
Swift 4 внес изменения в string API.
вы можете просто использовать!stringValue.isEmpty
вместоstringValue.characters.count > 0
для получения дополнительной информации вы получаете образец от здесь
для электронной.г
let edit = "Summary" edit.count // 7
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
один из наиболее распространенных случаев манипулирования строками-это ответы JSON. В этом примере я создал расширение в своем приложении watch, чтобы удалить последние (n) символы объекта Bitcoin JSON.
Swift 3:
func dropLast(_ n: Int = 0) -> String { return String(characters.dropLast(n))
Сообщение Об Ошибке Xcode 9.1:
'символы' является устаревшим: пожалуйста, используйте строку или подстроку непосредственно
в 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 для каждого метода.
Это предупреждение - всего лишь вершина айсберга, было много изменений строк, строки снова представляют собой набор символов, но мы получили soemthing новые и классные, подстроки:)
Это здорово читать об этом: https://useyourloaf.com/blog/updating-strings-for-swift-4/
использовать
characters
, потому чтоString
перестал быть коллекцией в Swift 2.0. Однако это все еще действительный код в Swift 4, но теперь он больше не нужен, чтоString
этоCollection
еще раз.например Swift 4
String
теперь имеет прямое свойство count, которое дает количество символов:// Swift 4 let spString = "Stack" spString.count // 5
примеры для строки и подстроки.
строка
Swift 4
String
теперь непосредственно получить элемент, который дает первый символ строки:(string.characters.first)
let spString = "Stack" let firstElement = spString.first //S
подстрока
С помощью подстроки получить первый символ.
let spstring = "Welcome" let indexStartOfText = spstring.index(spstring.startIndex, offsetBy: 1) let sub = spstring.substring(to: indexStartOfText) print(sub) //W