在Objective-c中将NSString转换为Integer

Gee*_*ldz 4 arrays iphone objective-c

我有一个数组,将电话号码的每个数字存储为字符串.然后我传递电话号码数字字符串作为参数objectAtIndex:这样的方法NSArray:[myArray objectAtIndex: [myString intValue]];编译器说我需要转换字符串,但我已经这样做了.怎么了?

更新:

这是我的实际代码行:

NSMutableArray *tmp = [[NSMutableArray alloc] initWithArray:[charHolder objectAtIndex:[[phoneNumDigits objectAtIndex:i]intValue]]];
Run Code Online (Sandbox Code Playgroud)

这是错误的位置,phoneNumDigits是电话号码的每个数字charHolder的数组,是包含与每个数字相关联的字母数组的数组.

Mar*_*uso 6

你的问题对我来说有点混乱.以下是我理解你想做的事情:

你有一个NSArray名字phoneNumDigits.该数组包含一些NSString对象.每个字符串类似于@"1"@"4"代表电话号码的单个数字.

现在,您希望将每个数字字符串转换为intNSInteger希望将这些整数存储在另一个数组中.

如果我理解正确,这是我的答案:

你无法完全按照自己的意愿行事,因为你不能把像a int或a 这样的简单数据类型float放入NSArray.

这就是包装类的原因NSNumber.你可以打包一个简单intNSNumber并将其存储NSNumber在一个NSArray.

所以,从让你的数字串phoneNumDigitstmp数组,你可以使用此代码:

for (NSString *digitAsString in phoneNumDigits)
{
    NSNumber *digitAsNumber = [NSNumber numberWithInt:[digitAsString intValue]];
    [tmp addObject:digitAsNumber];
}
Run Code Online (Sandbox Code Playgroud)

要使用inttmp,NSArray你可以使用

int digit = [[tmp objectAtIndex:idx] intValue];
Run Code Online (Sandbox Code Playgroud)

我希望这会有所帮助,但我不确定我理解你想在这里做什么.我完全可以忽略这一点.也许你可以分享一些代码.