ObjectiveC从String中解析整数

Chr*_*art 118 string iphone int objective-c

我正在尝试从数组中提取一个字符串(包含一个整数),然后将其用作函数中的int.我正在尝试使用intValue将其转换为int.

这是我一直在尝试的代码.

  NSArray *_returnedArguments = [serverOutput componentsSeparatedByString:@":"];
  [_appDelegate loggedIn:usernameField.text:passwordField.text:(int)[[_returnedArguments objectAtIndex:2] intValue]];
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

传递'loggedIn :::'的参数3使得整数指针没有强制转换

怎么了?

Chr*_*art 266

我真的不知道这个问题有多难,但我设法做到了这一点:

[myStringContainingInt intValue];

应该注意的是,你也可以这样做:

myStringContainingInt.intValue;

  • 当`myStringContainingInt`中的数字太大而无法容纳在32位内时会发生什么 - 实际上是31位,因为它已经签名了? (5认同)
  • 重要的是要注意你` - [NSString intValue]`可能不会完全按照你的预期行事.来自[docs](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/#//apple_ref/occ/instp/NSString/intValue):_此属性为0如果字符串不以数字的有效十进制文本表示开头.例如,`[@"2 asdghjk"intValue]`将返回"2". (5认同)
  • 只是为了我们来自其他语言的noobs,`[myStringContainingInt intValue];`也可以写成`myStringContainingInt.intValue;` (2认同)

Dan*_*Liu 8

你可以像[str intValue]或[str integerValue]那样转换字符串

integerValue返回接收者文本的NSInteger值.

  • (NSInteger)integerValue返回值接收者文本的NSInteger值,假设为十进制表示并在字符串的开头跳过空格.如果接收方不以数字的有效十进制文本表示开头,则返回0.

有关更多信息,请参阅此处

  • 你在跟我开玩笑吗?如果字符串为"0"怎么办?这是错误还是正确的解析?有点难过,苹果厌恶异常,因为这正是你需要它们的地方. (7认同)
  • 你回答了这个问题之后,同样的事情已经有很多答案了吗? (3认同)