我对以下代码有几个问题:
(1)"newItem"是一个自动释放的对象吗?它从指定的数组索引获取返回的字典?
(2)是否有一种简单的方法可以在一次点击中访问一系列词典,或者我按照您的预期方式进行操作?
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSMutableArray *menu = [[NSMutableArray alloc] init];
NSMutableDictionary *menuItem;
NSMutableDictionary *newItem;
NSArray *itemName = [NSArray arrayWithObjects:
@"Latte Medio",
@"Cappucion Medio",
@"Mocha Medio",
@"Vanilla Latte Medio",nil];
NSArray *itemFat = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:6.9],
[NSNumber numberWithFloat:4.7],
[NSNumber numberWithFloat:6.6],
[NSNumber numberWithFloat:6.9],nil];
NSArray *itemCals = [NSArray arrayWithObjects:
[NSNumber numberWithInt:516],
[NSNumber numberWithInt:408],
[NSNumber numberWithInt:624],
[NSNumber numberWithInt:743],nil];
NSLog(@"DICTARRAY ... Start");
// Create menuItem object
menuItem = [[NSMutableDictionary alloc] init];
[menuItem setObject:[itemName objectAtIndex:0] forKey:@"product"];
[menuItem setObject:[itemFat objectAtIndex:0] forKey:@"fat"];
[menuItem setObject:[itemCals objectAtIndex:0] forKey:@"calories"];
// Add menuItem object to menu
[menu addObject:menuItem];
[menuItem release], menuItem = nil;
// Access menu to get menuItem
newItem = [menu objectAtIndex:0];
NSLog(@"DATA: %@",[newItem objectForKey:@"product"]);
NSLog(@"DATA: %@",[newItem objectForKey:@"fat"]);
NSLog(@"DATA: %@",[newItem objectForKey:@"calories"]);
// Clean up
[menu release], menu = nil;
[pool drain];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
加里
您存储此信息的方式似乎很奇怪.当你正在处理的物品(或物品)真的是咖啡饮料时,你将所有的名字,所有的脂肪和所有的卡路里存储在一起.制作一个新对象可能会更容易,比方说CoffeeDrink如下:
@interface CoffeeDrink:NSObject {
NSString *name;
NSNumber *fat;
NSNumber *calories;
}
@property( retain ) NSString *name;
@property( retain ) NSNumber *fat;
@property( retain ) NSNumber *calories;
@end
Run Code Online (Sandbox Code Playgroud)
然后,在您的代码中,您可以拥有NSArray不同的CoffeeDrinks.