关键IOS的字典检索

时间:2012-08-24 06:44:48

标签: objective-c ios nsdictionary

对不起,我是IOS的新手,我无法找到解决这个问题的方法

这只是一个初学餐厅菜单

有一个包含项目和价格的tableview,当我点击一个项目时,它显示另一个视图,用户必须输入数量并单击一个完成按钮,所以当用户点击完成时我想要乘以数量乘以价格,我如何检索该特定价格并将其与文本字段中的用户输入数量相乘。

这是我的代码

我在名为

的Menu头文件中声明了NSDictionary
NSDictionary *dict;

我的viewdidload方法

dict=[[NSDictionaryalloc]initWithObjectsAndKeys:
@"TomatoSoup",@"20.00",@"VegManchowSoup",@"12.00",nil];
NSLog(@"%@",dict);
[super viewDidLoad];

我已在表格视图中显示此内容

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section{
return [[dict allKeys]count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}

NSArray *sortedkeys=[[dict allKeys]sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSString *key=[sortedkeys objectAtIndex:indexPath.row];
NSString *value=[dict objectForKey:key];
cell.textLabel.text=value;
cell.detailTextLabel.text=key;
return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath{
if(indexPath.row==0){   

VegQuantity *vegetarian1 = [[VegQuantity alloc]   initWithNibName:@"VegQuantity" bundle:nil];
vegetarian1.m_SelectedIndexPath=indexPath.row;
vegetarian1.pass=dict;
[self presentModalViewController:vegetarian1 animated:YES];
}
if(indexPath.row==1){   

VegQuantity *vegetarian1 = [[VegQuantity alloc] initWithNibName:@"VegQuantity" bundle:nil];
vegetarian1.m_SelectedIndexPath=indexPath.row;
[self presentModalViewController:vegetarian1 animated:YES];
}
}

VegQuantity.h 有一个View有一个文本字段和一个按钮说完了, 现在,当我点击完成按钮时,我需要检索特定汤的值并将其与我输入的数量相乘。 我的问题是我应该如何检索该特定密钥的价格(值)并将其与数量相乘。

2 个答案:

答案 0 :(得分:2)

dict=[[NSDictionary alloc]initWithObjectsAndKeys:
                     @"TomatoSoup",@"20.00",@"VegManchowSoup",@"12.00",nil];

方法是initWithObjectsAndKeys,这意味着首先是对象然后是键,(键" 20.00",对象 - " TomatoSoup") - 在你的情况下它是' s对面。

其次,而不是价格的NSString(我想它的价格或数量)使用NSNumber - [NSNumber numberWithFloat:20.0f]。

然后,制作你的VegQuantity视图控制器(顺便说一句,将其称为VegQuantityViewController,以保持命名约定)2属性:

@property (nonatomic, strong) NSString *itemName; //Use strong if using ARC,  otherwise retain
@property (nonatomic, strong) NSNumber *price;

并在显示之前将这些值传递给视图控制器。然后在里面,你可以随心所欲地做任何事情。   附:使用属性来操作实例变量的值是一种很好的做法。

答案 1 :(得分:0)

使用。

从Dictionary中检索值
[dict objectForKey:@"someDummyKey"];

但说实话。您应该使用NSMutableArray作为UITableView的数据源,而不是NSDictionary。