我试图将从json返回的id值转换为long值(时间戳目的)。
xcode sais me:
-[__NSCFString longValue]: unrecognized selector sent to instance 0x15d3f220
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString longValue]: unrecognized selector sent to instance 0x15d3f220'
下一行会破坏代码。
long time_now = [self getTimestamp];
long fdate = [[results2 objectForKey:@"pll_first_date"] longValue];
long sdate = [[results2 objectForKey:@"pll_second_date"] longValue];
我做错了什么? id类型不是要生成的动态类型吗?
发表评论后,这是我可能的解决方案:
long long time_now = [self getTimestamp];
long long fdate = [(NSString *)[results2 objectForKey:@"pll_first_date"] longLongValue];
long long sdate = [(NSString *)[results2 objectForKey:@"pll_second_date"] longLongValue];
答案 0 :(得分:2)
这不是演员,它是一个方法调用。并且,您无法从id
投射到long
(嗯,您可以,但它的效用非常有限)。
您尝试让NSString
将自己转换为long
,但它不会回复longValue
。
NSString
确实有一个longLongValue
方法,您可以使用它。
答案 1 :(得分:1)
选择器无法识别,因为longValue
不是NSString
中的方法。请改用longLongValue
。
long long fdate = [[results2 objectForKey:@"pll_first_date"] longLongValue];
long long nsdate = [[results2 objectForKey:@"pll_second_date"] longLongValue];
这是the documentation的链接。
答案 2 :(得分:0)
可能性:
long long time_now = [self getTimestamp];
long long fdate = [(NSString *)[results2 objectForKey:@"pll_first_date"] longLongValue];
long long sdate = [(NSString *)[results2 objectForKey:@"pll_second_date"] longLongValue];