猿问

我用NSString作为key的时候是可以的拿出来的啊,求指点

我用NSNumber为key,然后插入一个对象到NSMutableDictionary中:

            NSNumber * key = [NSNumber numberWithInt:tmpWheel.WheelId];            [allWheels setObject:tmpWheel forKey:key];

然后我在其他地方用遍历这个NSMutableDictionary

for (NSNumber * key in [allWheels allKeys])
        {            NSLog(@"key : %@", key);
            Wheels * tmpWheel = [allWheels objectForKey:key];            NSLog(@"value : %@",tmpWheel.WheelName);
        }

竟然是null,拿不出value,我无语。什么原因??


暮色呼如
浏览 249回答 2
2回答

MMTTMM

理论上不会出现这样的问题,只要Key是NSObject而且实现了NSCopying的Delegate就可以。而且我用代码测试:    NSNumber *n = [NSNumber numberWithFloat:1.0f];    NSNumber *nn = [NSNumber numberWithFloat:2.0f];         NSMutableDictionary *d = [NSMutableDictionary dictionary];     [d setObject:@"1" forKey:n];     [d setObject:@"2" forKey:nn];         for (NSNumber *k in [d allKeys]) {        NSLog(@"%@", [d objectForKey:k]);     }是可以打印 1 和 2 出来的你之所以出现这个问题,我建议你检查key对象本身是否就是失败的

米脂

要实现NSCopying和hash
随时随地看视频慕课网APP

相关分类

iOS
我要回答