如何将密钥转换为NSNumber?这段代码给了我错误:
无论我如何尝试,我总是最终得到错误:不兼容的整数到指针转换从'NSIntegar'(又名'int')分配给'NSNumber'。
for (id key in consultants)
{
consultantData = [[ConsultantData alloc] init];
consultantData.name = [consultants objectForKey:key];
consultantData.conID = [[NSNumber numberWithInteger:key] integerValue];
NSLog(@"name: %@ ID: %@", consultantData.name, consultantData.conID);
[consultantList addObject:consultantData];
[consultantData release];
}
这是我的对象ConsultantData:
#import <Foundation/Foundation.h>
@interface ConsultantData : NSObject
{
NSString *name;
NSNumber *conID;
}
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSNumber *conID;
@end
#import "ConsultantData.h"
@implementation ConsultantData
@synthesize name;
@synthesize conID;
-(void) dealloc
{
[name release];
[conID release];
[super dealloc];
}
@end
如果我尝试isMemberOfClass,它永远不会返回true。如果我尝试isKindOfClass,它会告诉我它是一个NSString。
顾问是我从我的服务器接收的字典,它通过XMLRPC函数传递(服务器是PHP)。从我所看到的,一切都是服务器字典中的字符串返回。
答案 0 :(得分:2)
可能是你的订单错了。
consultantData.conID = [[NSNumber numberWithInteger:key] integerValue];
表示
NSNumber *foo = [NSNumber numberWithInteger:key];
NSInteger bar = [foo integerValue];
consultantData.conID = bar;
你可能想要
consultantData.conID = [NSNumber numberWithInteger:[key integerValue]];
以详细形式:
NSInteger foo = [key integerValue];
NSNumber *bar = [NSNumber numberWithInteger:foo];
consultantData.conID = bar;
答案 1 :(得分:1)
consultantData.conID = [[NSNumber numberWithInteger:key] integerValue];
以上一行应为:
consultantData.conID = [NSNumber numberWithInteger:[key integerValue]];
答案 2 :(得分:1)
假设您的密钥是NSString,则无法将密钥传递给[NSNumber numberWithInteger:key],因为它不是整数!使用键上的intValue方法获取一个整数,然后将整数转换为NSNumber,如下所示:
consultantData.conID = [NSNumber numberWithInteger:[key intValue]];
答案 3 :(得分:0)
integerValue返回NSInteger,它不是NSNumber。你应该直接传递NSNumber:
consultantData.conID = [NSNumber numberWithInteger:[key integerValue]];