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