将 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
我正在尝试将 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