ios string substring swift4 xcode9.1

ios - advertencia: los ''caracteres'' están en desuso: utilice String o Substring directamente



swift4 xcode9.1 (6)

Esa advertencia es solo una parte superior del iceberg, hubo una gran cantidad de cambios de cadena, las cadenas son nuevamente una colección de caracteres, pero tenemos algo nuevo y genial, subStrings :)

Esta es una gran lectura sobre esto: https://useyourloaf.com/blog/updating-strings-for-swift-4/

characters - una propiedad de instancia de String, está en desuso con Xcode 9.1

Fue muy útil obtener una subcadena de String usando la propiedad de characters , pero ahora ha quedado en desuso y Xcode sugiere usar la substring . He tratado de verificar las preguntas SO y los tutoriales / pautas para desarrolladores de Apple para lo mismo. Pero no pude ver ninguna solución / alternativa como se sugiere.

Aquí hay un mensaje de advertencia:

''caracteres'' están en desuso: utilice String o Substring

Tengo tantas operaciones de cadena que se realizan / manejan utilizando characters propiedad.

¿Alguien tiene alguna idea / información sobre esta actualización?


Swift 4 introdujo cambios en la cadena de API.
Puede usar !stringValue.isEmpty lugar de stringValue.characters.count > 0

para obtener más información, obtenga la muestra desde aquí

por ej.

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


Swift 4 vs Swift 3 ejemplos:

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


También puede usar este código para agrupar el diccionario sin usar {$ 0.characters.first! }.

let cities = ["Shanghai": 24_256_800, "Karachi": 23_500_000, "Beijing": 21_516_000, "Seoul": 9_995_000] let groupedCities = Dictionary(grouping: cities.keys) { $0.first! } print(groupedCities)


Uno de los casos más comunes para manipular cadenas es con respuestas JSON. En este ejemplo, creé una extensión en mi aplicación de reloj para soltar los últimos (n) caracteres de un objeto JSON de Bitcoin.

Swift 3:

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

Mensaje de error de Xcode 9.1:

los ''caracteres'' están en desuso: utilice String o Substring directamente

Xcode nos dice que usemos la variable de cadena o el método directamente .

Swift 4:

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

Extensión completa:

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

Llamada:

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

Consola:

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

Ejemplos adicionales:

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

Documentación:

A menudo utilizará métodos comunes como dropLast() o removeLast() o count así que aquí está la documentación explícita de Apple para cada método.

droplast()

removelast()

contando personajes


Utilice estos characters porque String dejó de ser una colección en Swift 2.0. Sin embargo, esto sigue siendo un código válido en Swift 4, pero ya no es necesario ahora que String es una Collection nuevamente.

Por ejemplo, una String Swift 4 ahora tiene una propiedad de recuento directo que le da el recuento de caracteres:

// Swift 4 let spString = "Stack" spString.count // 5

Ejemplos para String y SubString.

Cuerda

Swift 4 String ahora obtiene directamente Element que le da el primer carácter de String: (string.characters.first)

let spString = "Stack" let firstElement = spString.first //S

Subcadena

Usando SubString obtén el primer carácter.

let spstring = "Welcome" let indexStartOfText = spstring.index(spstring.startIndex, offsetBy: 1) let sub = spstring.substring(to: indexStartOfText) print(sub) //W