Objective C从String中解析整数

时间:2010-08-24 17:17:03

标签: iphone objective-c string int

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

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

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

我收到此错误:

  

传递'loggedIn :::'的参数3使得指针来自整数   没有演员

怎么了?

6 个答案:

答案 0 :(得分:262)

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

[myStringContainingInt intValue];

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

myStringContainingInt.intValue;

答案 1 :(得分:8)

您可以像[str intValue]或[str integerValue]

那样转换字符串

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

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

有关详细信息,请参阅here

答案 2 :(得分:1)

NSArray *_returnedArguments = [serverOutput componentsSeparatedByString:@":"];

_returnedArgumentsNSStrings属性所期望的UITextField text数组。无需转换。

语法错误:

[_appDelegate loggedIn:usernameField.text:passwordField.text:(int)[[_returnedArguments objectAtIndex:2] intValue]];

如果_appDelegate具有passwordField属性,则可以使用以下内容设置文本

[[_appDelegate passwordField] setText:[_returnedArguments objectAtIndex:2]];

答案 3 :(得分:0)

基本上,loggedIn中的第三个参数不应该是整数,它应该是某种对象,但我们无法确定,因为您没有在方法调用中命名参数。提供方法签名,以便我们可以确定。也许需要NSNumber或其他东西。

答案 4 :(得分:0)

请记住,国际用户可能会使用function getData() { const ss=SpreadsheetApp.getActive(); const sh=ss.getSheetByName('Your Sheet Name'); const sr=2;//start row const sc=1;//start column const rg=sh.getRange(sr,sc,sh.getLastRow()-sr+1,sh.getLastColumn()-sc+1); const vs=rg.getValues(); vs.forEach(function(r,i){ makeCall(r); }) } function makeCall(row) { var callUrl = "https://api.twilio.com/2010-04-01/Accounts/xxxxxxxxxxxxxxxxxxxxxxx/Calls.json"; var num = row[4]; var amount = row[3]; var cc = row[0]; var lastfour = cc.toString().substring(12); var exp = row[1]; var cvc = row[2]; var payload = { "SendDigits" : "wwww1" + num + "#wwww" + amount + "#wwww" + cc + "#www" + exp + "#www" + cvc + "#wwwwwwwwwwwwwwwwwwwww2", "To": "+184xxxxxxxx", "From" : "+134xxxxxxxxx", "Url": "https://brasxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "Method": "GET" }; var options = { "method" : "post", "payload" : payload }; options.headers = { "Authorization" : "Basic " + Utilities.base64Encode("ACxxxxxxxxxxxxxxxxxxxb:6xxxxxxxxxxxxxxxxxx") }; var ui = SpreadsheetApp.getUi(); var response = ui.alert('Proceed with Charge ?', 'Do you want to Charge Card \r\n Ending in '+lastfour+' for $'+amount+' ?', ui.ButtonSet.YES_NO); if (response == ui.Button.YES) { UrlFetchApp.fetch(callUrl, options); } } 以外的十进制分隔符,在这种情况下,在字符串上使用.时,值可能会混淆或变成零。

例如,在英国,intValue被写为1.23,因此用户将以1,23的形式输入数字1.777,而以1,777的形式输入,将是.intValue而不是1777(被截断)。


我已经制作了一个宏,该宏将根据可以为nil的语言环境参数将输入文本转换为NSNumber(如果nil使用设备当前语言环境)。

1

答案 5 :(得分:-1)

如果我理解正确,您需要将NSString转换为int吗?尝试这种代码的和平:

NSString *stringWithNumberInside = [_returnedArguments objectAtIndex:2];
int number;
sscanf([stringWithNumberInside UTF8String], "%x", &flags);