将 NSInteger 转换为 NSString Xcode iOS8

Convert a NSInteger to NSString Xcode iOS8

我正在尝试将 NSInteger 转换为 NSString 以在 UIAlerView 中显示 NSInteger 值。但问题是我收到此错误:"Bad receiver type 'NSInteger' (aka 'long')" 当我尝试转换 NSInteger.

NSInteger:

NSInteger clasesDadas = clases.count;

clases.count 是我在 TableView 中的行数。

密码是:

-(void)infoAction
{
    NSInteger clasesDadas = clases.count;

    NSString *inStr = [NSString stringWithFormat:@"%d", [clasesDadas intValue]]; /*HERE IS THE ERROR*/

    UIAlertView *alertatiempo = [[UIAlertView alloc] initWithTitle:@"Información" message:inStr delegate:self cancelButtonTitle:@"Aceptar" otherButtonTitles:nil];
    [alertatiempo show];

}

谁能帮帮我?非常感谢。

intValue is not methods that exist on a NSInteger but on NSNumber。 由于 NSInteger 是 32 位原始类型 int 和 64 位原始类型 long 的类型定义,因此它没有方法。

以下是您的操作方法,转换以确保它在 32 位和 64 位设备上都能正常工作。

NSString *inStr = [NSString stringWithFormat:@"%ld", (long)clasesDadas ]; 

同样如 meronix 所述,计数方法将导致 NSUInteger 因此您可能需要相应地检查类型和格式

NSString *inStr = [NSString stringWithFormat:@"%d", clasesDadas];
NSString *inStr = [NSString stringWithFormat:@"%d", (int)clasesDadas];

这应该可以正常工作。

试试这个:

NSString *inStr = [NSString stringWithFormat:@"%lu", (unsigned long)clasesDadas];

NSInteger 声明在 32 位或 64 位设备上可能不同,因此苹果建议为 NSString

获取 array.count
 NSString *inStr = [NSString stringWithFormat:@"%d", (int)clases.count]; 

您的 classesDadas 已经是 NSInteger,因此您不能使用方法 intValue

要将整数转换为字符串,您可以在 NSNumber 中将其转换并使用方法 stringValue,如下所示:

NSString *inStr = [[NSNumber numberWithInteger:clasesDadas] stringValue]

您还可以使用语法 @() 将您的 NSInteger 转换为对象 (NSNumber)。例如:

NSString *inStr = [NSString stringWithFormat:@"%@", @(clasesDadas)];

您可以使用 Boxed Expressions。

例如@(10).stringValue@(variable).stringValue