Estoy tratando de extraer una cadena (que contiene un número entero) de una matriz y luego usarla como un int en una función. Estoy tratando de convertirlo en un int usando intValue.
Aquí está el código que he estado probando.
NSArray *_returnedArguments = [serverOutput componentsSeparatedByString:@":"];
[_appDelegate loggedIn:usernameField.text:passwordField.text:(int)[[_returnedArguments objectAtIndex:2] intValue]];
Me sale este error:
pasar el argumento 3 de 'logIn :::' hace que el puntero sea un número entero sin una conversión
¿Qué pasa?
iphone
objective-c
string
int
Christian Stewart
fuente
fuente
(int)
papelloggedIn:::
método, que es una forma decididamente no Objective-C de hacer las cosas.loggedIn:::
. El resto de esa declaración son solo nombres de parámetros, no parte del selector. Idiomáticamente, debería serlo- (void)loggedIn:(NSString *)tusername password:(NSString *)tpassword userID:(int)userId
. Y luego lo llamarías como[_appDelegate userIsLoggedIn:usernameField.text password:passwordField.text userID:[[_returnedArguments objectAtIndex:2] intValue]];
.Respuestas:
Realmente no sé qué fue tan difícil sobre esta pregunta, pero me las arreglé para hacerlo de esta manera:
[myStringContainingInt intValue];
Cabe señalar que también puedes hacer:
myStringContainingInt.intValue;
fuente
[myStringContainingInt intValue];
también se puede escribir comomyStringContainingInt.intValue;
myStringContainingInt
es demasiado grande para caber dentro de 32 bits, en realidad 31 bits desde que está firmado?-[NSString intValue]
posible que no se comporte exactamente como espera. De los documentos : esta propiedad es 0 si la cadena no comienza con una representación de texto decimal válida de un número. Por ejemplo,[@" 2 asdghjk" intValue]
volverá2
.Puede convertir la cadena así [str intValue] o [str integerValue]
integerValue Devuelve el valor NSInteger del texto del receptor.
para obtener más información, consulte aquí
fuente
_returnedArguments
es una matriz de laNSStrings
queUITextField text
espera la propiedad. No es necesario convertir.Error de sintaxis:
Si su _appDelegate tiene una
passwordField
propiedad, entonces puede configurar el texto usando lo siguientefuente
passwordField.text
es el segundo argumento delloggedIn:::
método y[[_returnedArguments objectAtIndex:2] intValue]
es el tercer argumento. No se pasa nada a una propiedad.Básicamente, el tercer parámetro
loggedIn
no debe ser un número entero, debe ser un objeto de algún tipo, pero no podemos saberlo con certeza porque no nombró los parámetros en la llamada al método. Proporcione la firma del método para que podamos verlo con seguridad. Quizás se necesitaNSNumber
algo o algo.fuente
int*
, de hecho, eso me parece bastante probable, ya que muchas personas que escriben Objective-C sin aprender los conceptos básicos de C asumen que los tipos de parámetros solo incluyen estrellas como parte de su sintaxis.Tenga en cuenta que los usuarios internacionales pueden estar usando un separador decimal distinto de,
.
en cuyo caso los valores pueden confundirse o simplemente volverse nulos cuando se usanintValue
en una cadena.Por ejemplo, en el Reino Unido
1.23
está escrito1,23
, por lo que el número1.777
sería de entrada por el usuario como1,777
, que, como.intValue
, será1777
no1
(truncado).Hice una macro que convertirá el texto de entrada a un NSNumber basado en un argumento de configuración regional que puede ser nulo (si es nulo, usa la configuración regional actual del dispositivo).
fuente
Si te entendí correctamente, necesitas convertir tu
NSString
aint
? Prueba esta paz de código:fuente
intValue
método. developer.apple.com/iphone/library/documentation/cocoa/…