Как использовать NSMutableDictionary в UIAlertView?

Я делаю счетчик калорий, и я создал UIAlertView, который дает мне список продуктов питания. Я сделал NSMutableDictionary содержащие еду и калории:

@implementation FoodDatabase

-(id)init 
{    
  self = [super init];
  if(self) 
  {
    food= [[NSMutableDictionary alloc] init];
    [food setObject:@"111" forKey:@"Rice"];       
  }
  return self;
}


-(NSString *) foodList: (NSString *) foodItem 
{
    for(NSString *key in [food allKeys]) 
    {        
        if([foodItem isEqual: key]) 
        {
            NSLog(@"%@",foodItem);
            return [food objectForKey:foodItem];
        }
    }
 }


@end

В другом классе я создал UIAlertView который дает список продуктов питания. Это фрагмент кода для элемента Райс:

NSString *buttonTitle = [alertView buttonTitleAtIndex:buttonIndex];
if([buttonTitle isEqualToString:@"Rice"])
{        
    NSString *xyz = [foodData foodList: @"Rice"];
    food_calorie = ([xyz floatValue]);

    UIAlertView *rice_alert=[[UIAlertView alloc] initWithTitle:@"Enter quantity of rice consumed" message:@"100 gms = 111 calories" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];

    [rice_alert addTextFieldWithValue:@"" label:@"Enter quantity in gms"];

    RiceText = [rice_alert textFieldAtIndex:0];
    RiceText.keyboardType = UIKeyboardTypeNumberPad;
    RiceText.clearsOnBeginEditing = YES;
    RiceText.clearButtonMode = UITextFieldViewModeWhileEditing;
    RiceText.keyboardAppearance = UIKeyboardAppearanceAlert;
    rice_alert.tag = RiceAlertView;

    [rice_alert show];
    [rice_alert release];

}

Я рассчитываю общее количество калорий, используя значение, введенное пользователем в _RiceText_ и значение _object_ возвращается за конкретный ключ (в данном случае рис). Но, похоже, не возвращает значение _object_ как NSLog шоу _(null)_ для значения _xyz_, Куда я иду не так??

1 ответ

Решение

Вся ошибка в том, что объект foodData не инициализирован должным образом. Итак, инициализируйте его

Хорошая документация - https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSObject_Class/Reference/Reference.html

и выборка данных из NSmutableDictionary

https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSDictionary_Class/Reference/Reference.html:

Помните key который вы используете для сравнения в словаре, должен иметь такой же регистр (прописной - маленький), как определено ранее. Например, вы сохраняете объект для ключа 'example', но вы не можете получить его, используя ''Example'или'EXAMPLE'. Вы можете использовать только "пример", как определено ранее. А также


Вам не нужно получать массивы ключей из словаря и быстро перечислять его

Вы можете просто получить объект, используя objectForKey: метод. Удачи.

Другие вопросы по тегам