如何在Objective-C中使用NSNumber而不是NSString访问NSDictionary中的Object of Key

时间:2017-08-10 08:34:06

标签: ios objective-c nsdictionary

我有一个 NSDictionary Int 变量:

mainDic = @{@1:@"1.jpg",@2:@"2.jpg"};
indexpath.row = 2;

我想使用 indexpath.row 这样访问对象2的价值:

cell.pic.image = [UIImage imageNamed:mainDic[indexpath.row]];

但它不起作用。 ...

2 个答案:

答案 0 :(得分:1)

您的钥匙应位于左侧,而不是右侧。我认为还有拼写错误:@" 2,jpg"。但应该是@" 2.jpg"。 但通常使用数组而不是NSDictionary。因为我记得整数不能成为一把钥匙。

答案 1 :(得分:1)

mainDic = @{@1:@"1.jpg",@2:@"2.jpg"};将NSNumbers用于此词典中的键。

@ 1会创建一个NSNumber,它只是[NSNumber numberWithInt:1]的快捷方式。 所以你的词典看起来像这样:NSDictionary <NSNumber *, NSString *> *mainDic;

NSIndexPath的row属性是只读整数。 您尝试使用整数访问NSDictionary,而不是使用NSNumber作为键,正确的调用应该是:

NSNumber *row = [NSNumber numberWithInteger:indexpath.row];
cell.pic.image = [UIImage imageNamed:mainDic[row]];

但我只是使用一个数组,它更容易从它访问图像。

NSArray *images = @[@"1.jpg",
                    @"2.jpg",
                    @"3.jpg"];
cell.pic.image = [UIImage imageNamed:images[indexpath.row]];