ios string swift xcode7 xcode6.3

ios - Longitud de cadena en Swift 1.2 y Swift 2.0



string xcode7 (5)

Esta pregunta ya tiene una respuesta aquí:

En la versión anterior de Swift, tenía el siguiente código.

func myfunc(mystr: String) { if mystr.utf16Count >= 3 {

Con la última versión de Swift 1.2, ahora aparece el siguiente error.

''utf16Count'' is unavailable: Take the count of a UTF-16 view instead, i.e. count(str.utf16)

Ok, entonces cambio mi código de la siguiente manera.

func myfunc(mystr: String) { if count(mystr.utf16) >= 3 {

Pero eso no funciona. Ahora recibo el siguiente mensaje de error en su lugar.

''(String.UTF16View) -> _'' is not identical to ''Int16''

¿Cuál es la forma correcta de obtener la longitud de una cadena con Swift 1.2?


Aquí está todo en uno, copiado desde here

let str = "Hello" let count = str.length // returns 5 (Int) extension String { var length: Int { return countElements(self) } // Swift 1.1 } extension String { var length: Int { return count(self) } // Swift 1.2 } extension String { var length: Int { return characters.count } // Swift 2.0 }


Debe usar la propiedad de caracteres que contiene el recuento de propiedades:

yourString.characters.count


Puede usar la extensión como:

extension String { var length: Int { return count(self) } // Swift 1.2 }

y puedes usarlo:

if mystr.length >= 3 { }

O puede contar directamente de esta manera:

if count(mystr) >= 3{ }

Y esto también está funcionando para mí:

if count(mystr.utf16) >= 3 { }

Para Swift 2.0:

extension String { var length: Int { return characters.count } } let str = "Hello, World" str.length //12

Otra extensión:

extension String { var length: Int { return (self as NSString).length } } let str = "Hello, World" str.length //12

Si quieres uso directo:

let str: String = "Hello, World" print(str.characters.count) // 12 let str1: String = "Hello, World" print(str1.endIndex) // 12 let str2 = "Hello, World" NSString(string: str2).length //12


count(mystr) es la forma correcta, no necesita convertir la codificación.

Esto: if count(mystr.utf16) >= 3 está bien siempre que lo haga Int16(3)

Editar: esta es una vieja respuesta. OP actualizó su pregunta para reflejar Swift 2 y la respuesta anterior es correcta.