在Objective-C中将NSString转换为整数

4

我有一个存储电话号码每个数字的字符串数组。然后,我将电话号码数字字符串作为参数传递给NSArrayobjectAtIndex方法,如下所示:[myArray objectAtIndex:[myString intValue]];编译器说我需要将字符串强制转换,但我已经这样做了。问题出在哪里?

更新:

这是我的实际代码行:

NSMutableArray *tmp = [[NSMutableArray alloc] initWithArray:[charHolder objectAtIndex:[[phoneNumDigits objectAtIndex:i]intValue]]];

这里出现了错误,phoneNumDigits是电话号码的每个数字的数组,charHolder是保存与每个数字关联的字母数组的数组。

myString的实际值是什么? - Daniel A. White
一些代码可以帮助我们帮助您,请将源代码部分放入“code”标记中。 - Nava Carmon
这是你实际的代码,还是你重新打的代码?如果你能在这里发布一小段代码片段,那应该会非常有帮助。 - Chuck
你需要展示在哪里初始化了 myString - Jonathan.
那不是我的实际代码,我马上会发布它。 - GeeGoldz
显示剩余2条评论
2个回答

6
您的问题对我来说有点混淆。这是我理解您想要做什么的方式:
您有一个名为phoneNumDigits的NSArray。该数组包含一些NSString对象。每个字符串都类似于@"1"或@"4",表示电话号码的单个数字。
现在,您想将每个数字字符串转换为int或NSInteger,并希望将这些整数存储在另一个数组中。
如果我正确理解了您的意思,这是我的答案:
您无法完全做到您想要的,因为您无法将简单数据类型(如int或float)放入NSArray中。
这就是为什么有包装类NSNumber的原因。您可以将简单的int打包到NSNumber中,并将此NSNumber存储在NSArray中。
因此,要将phoneNumDigits中的字符串数字放入tmp数组中,您可以使用以下代码:
for (NSString *digitAsString in phoneNumDigits)
{
    NSNumber *digitAsNumber = [NSNumber numberWithInt:[digitAsString intValue]];
    [tmp addObject:digitAsNumber];
}

要从 tmp-NSArray 中获取 int,您可以使用以下代码:
int digit = [[tmp objectAtIndex:idx] intValue];

我希望这能够有所帮助,但我不确定我是否理解了你想要在这里做什么。我可能完全没有抓住重点。也许你可以分享更多的代码。


1
NSMutableArray *tmp = [[NSMutableArray alloc] initWithArray:[charHolder objectAtIndex:[[phoneNumDigits objectAtIndex:i]intValue]]]; 
objectAtIndex 返回一个泛型对象 (id)。它并不知道数组中的对象是字符串,因为它可以是任何类型。所以你需要进行强制类型转换。或者为了增加可读性,可以为它们创建变量。例如:
int phoneNumberDigit = [phoneNumDigits objectAtIndex:i];
NSArray *chars = [charHolder objectAtIndex:phoneNumberDigit];
NSMutableArray *tmp = [[NSMutableArray alloc] initWithArray:chars];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接