[英]Convert NSObject to NSNumber
如何在Objective-C中将NSObject
类型的对象转换为NSNumber
?
在Android中,我这样做:
if(value instanceof Integer){
intValue = (Integer)value;
}
但是如何在Objective-C中转换价值?
我的代码:
-(void)changeWithValue:(NSObject*)value{
if([value isKindOfClass:[NSNumber class]])
float floatValue = [value floatValue];
}
但这不起作用:(
请帮帮我。 谢谢
弄清您的错误后,Objective-C-ese解决方案是使用id
作为参数类型。 类型id
表示“任何对象类型”,编译器允许您调用任何方法。 因此,您将具有以下代码:
- (void)changeWithValue:(id)value
{
if([value isKindOfClass:[NSNumber class]])
{
float floatValue = [value floatValue];
...
}
else
{
// handle not an `NSNumber`
}
}
您可以通过使用respondsToSelector:
使它更通用地测试方法而不是类型:
- (void)changeWithValue:(id)value
{
if([value respondsToSelector:@selector(floatValue)])
{
float floatValue = [value floatValue];
...
}
else
{
// handle case where value does not support floatValue
}
}
高温超导
你有试过吗
-(void)changeWithValue:(NSObject*)value{
if([value isKindOfClass:[NSNumber class]])
NSNumber *num = (NSNumber*)value;
float floatValue = [num floatValue];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.