我正在尝试在NSMutableDictionary中设置setObject并得到奇怪的警告,听到的是代码
if ([errorCode intValue] != -1) {
NSLog(@"after getting data back");
NSString *userName = [[protocol3Replay valueForKeyPath:uName]autorelease];
NSString *userPassword = [[protocol3Replay valueForKeyPath:pass]autorelease];
NSNumber *UserId = [[protocol3Replay valueForKeyPath:@"Session.user_id"]autorelease];
NSNumber *customerId = [[protocol3Replay valueForKeyPath:@"Session.customer_id"]autorelease];
BOOL b = [file checkFile];
NSLog(@"after check file exists");
if (b == YES) {
NSLog(@"file exist");
NSMutableDictionary *fileDic = [[[NSMutableDictionary alloc]init]autorelease];
fileDic = [file readFile];
[fileDic setObject:[NSNumber numberWithInteger:UserId] forKey:@"user_id"];
[fileDic setObject:token forKey:@"device_token"];
[fileDic setObject:[NSNumber numberWithInteger:customerId] forKey:@"customer_id"];
[fileDic setObject:userName forKey:@"user_name" ];
[fileDic setObject:userPassword forKey:@"user_password" ];
}
警告:语义问题:指向整数转换的不兼容指针将'NSNumber *'发送到'NSInteger'类型的参数(又名'int')
方式是这样的?
2 回答
您将
UserID
传递给numberWithInteger:
,后者需要NSInteger
. 这与setObject:
无关 . 您可能希望复制UserID
或直接将UserID
传递给setObject:
.UserID是一个OBJECT,numberWithInteger的参数是一个NSInteger,它只是一个整数 . NSInteger不是NSNumber或NSObject的子类 . 它不是指针,而是整数 .
所以你的声明NSNumber * UserID = ...应该是NSInteger userID(没有*因为它不是指针) .
附:这只是解决问题的一种可能方法 .