我试着在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" ];
}
the waning si:警告:语义问题:指向整数转换的指针不兼容发送' NSNumber *'参数类型' NSInteger' (又名' int')
方式是什么?
答案 0 :(得分:2)
您将UserID
传递给numberWithInteger:
,NSInteger
。这与setObject:
无关。您可能希望复制UserID
或直接将UserID
传递给setObject:
。
答案 1 :(得分:1)
UserID是一个OBJECT,numberWithInteger的参数是NSInteger,它只是一个整数。 NSInteger不是NSNumber或NSObject的子类。它不是指针,而是整数。
所以你的声明NSNumber * UserID = ...应该是NSInteger userID(没有*因为它不是指针)。
P.S。这只是解决问题的一种可能方法。