将NSInteger转换为NSString Xcode iOS8

将NSInteger转换为NSString Xcode iOS8,ios,objective-c,foundation,Ios,Objective C,Foundation,我正在尝试将NSInteger转换为NSString,以在UIAlerView中显示NSInteger值。但问题是,当我试图转换NSInteger时,会出现这样的错误:“错误的接收器类型'NSInteger'(也称为'long')” NSInteger: NSInteger clasesDadas = clases.count; clases.count是我在TableView中拥有的行数 代码是: -(void)infoAction { NSInteger clasesDadas =

我正在尝试将NSInteger转换为NSString,以在UIAlerView中显示NSInteger值。但问题是,当我试图转换NSInteger时,会出现这样的错误:“错误的接收器类型'NSInteger'(也称为'long')”

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];

}
有人能帮我吗?非常感谢。

不是存在于
NSInteger
上的方法,而是存在于。 由于是32位的基元类型
int
和64位的基元类型
long
的typedef,因此它没有方法

下面是您如何做到这一点的,强制转换以确保它在32位和64位设备上都能工作

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

此外,正如count方法所述,将导致一个
NSUInteger
,因此您可能需要相应地检查类型和格式

NSString *inStr = [NSString stringWithFormat:@"%d", clasesDadas];
这应该很好。试试这个:

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

NSInteger声明在32位或64位设备上可能不同,因此苹果建议获取NSString的array.count

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

 NSString *inStr = [NSString stringWithFormat:@"%d", (int)clases.count]; 
要将整数转换为字符串,可以在
NSNumber
中进行转换,并使用
stringValue
方法如下:

NSString *inStr = [[NSNumber numberWithInteger:clasesDadas] stringValue]
您还可以使用语法
@()
NSInteger
转换为对象(NSNumber)。例如:

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

您可以与装箱表达式一起使用


例如
@(10).stringValue
@(变量).stringValue

为什么要将其从有符号转换为无符号?在“知道”中,count返回一个
nsuiger
,但只是在意外的结果中抛出了cab-yield。我假设“count”是nsuiger,作为一个数组。count,正如他所说的“我在TableView中的行数”(nsuiger)是的,但是你也应该建议将
clasedatas
声明为
nsuiger
对,您更改了您的评论,正如我所说:“还有”,现在我同意您的看法,不是因为
NSInteger
是有符号的,所以会产生错误。但在计数时,最好使用
NSUInteger
。可能重复的
NSString *inStr = [NSString stringWithFormat:@"%@", @(clasesDadas)];