empty - Llamando al método NSString en una cadena en Swift
swift declare string (4)
La documentation Apple indica que
Si está trabajando con el marco de Foundation en Cocoa o Cocoa Touch, toda la API de NSString está disponible para solicitar cualquier valor de String que cree.
Si tengo un objeto String por ejemplo
var newString: String = "this is a string"
¿Cómo realizo las operaciones de NSString, como el que containsString
cadenas en mi String var?
Así que lo que realmente tienes que hacer es esto
var str:NSString = "Checkcontains"
str.containsString("ckc")
Observe cómo se coloca allí la declaración de una NSString explícita. A continuación, puede utilizar el método knowsString. Si solo usa var y no lo configura como NSString, entonces tiene problemas.
Después de investigar un poco, parece NSString
no es una función de String
, pero se puede acceder NSString
a una NSString
.
Bajo la documentación de Apple sobre el uso de Swift con Cocoa y Objective-C , se dice que
Swift se conecta automáticamente entre el tipo String y la clase NSString. Esto significa que en cualquier lugar que use un objeto NSString, puede usar un tipo de cadena Swift y obtener los beneficios de ambos tipos
Pero parece que solo algunas de las funciones de NSString son accesibles sin un puente explícito. Para enlazar a una NSString y usar cualquiera de sus funciones, los siguientes métodos funcionan:
//Example Swift String var
var newString:String = "this is a string"
//Bridging to NSString
//1
(newString as NSString).containsString("string")
//2
newString.bridgeToObjectiveC().containsString("string")
//3
NSString(string: newString).containsString("string")
Los tres de estos trabajos. Es interesante ver que solo algunos métodos NSString
están disponibles para Strings
y otros necesitan puentes explícitos. Esto puede ser algo que se construye a medida que Swift se desarrolla.
Los métodos son los mismos, pero en su lugar solo usan la sintaxis de swift. Por ejemplo:
var newString: String = "this is a string"
newString = newString.stringByAppendingString(" that is now longer")
println(newString)
en lugar de:
NSString* newString = @"this is a string";
newString = [newString stringByAppendingString:@" that is now longer"];
NSLog(newString);
Nota:
No todos los métodos de NSString se pueden llamar en String. Algunos tienes que unirte a NSString primero así:
newString.bridgeToObjectiveC().containsString("string")
Puede llamar a cualquier método NSString en un objeto Swift String; debajo de la capucha, los dos objetos son "puenteados sin cargo". Por lo tanto, usted puede simplemente hacer:
var newString = "this is a string"
if newString.containsString("string") {
//do your stuff
}