Получить значения из текстового поля и сохранить их в словаре в Objective - C - PullRequest
0 голосов
/ 06 января 2019

У меня есть textfield в tableviewcell. При нажатии кнопки я хочу сохранить значения из текстового поля в словаре. Но одно из текстовых полей возвращает ноль, хотя и имеет значение.

NSString *sEmpty= [[NSString alloc] init];

for(int i = 0; i < 13; i++){

  myProfileCell *cell = [_tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];

  sEmpty = cell.tfProfileDetails.text;

  if (sEmpty == nil) {
   sEmpty = @"";
  }

  NSString *str;

  switch (i) {
   case 0:
    str = @"first_name";
    [_userDict setObject:sEmpty forKey:str];
    sEmpty = nil;

    break;

   case 1:
    str = @"middle_name";
    [_userDict setObject:sEmpty forKey:str];
    sEmpty = nil;

    break;

   case 2:
    str = @"last_name";
    [_userDict setObject:sEmpty forKey:str];
    sEmpty = nil;

    break;

   case 3:
    str = @"profile";
    [_userDict setObject:sEmpty forKey:str];
    sEmpty = nil;

    break;

   case 4:
    str = @"email";
    [_userDict setObject:sEmpty forKey:str];
    sEmpty = nil;

    break;

   case 5:
    str = @"phone";
    [_userDict setObject:sEmpty forKey:str];
    sEmpty = nil;

    break;

   case 6:
    str = @"birth_date";
    [_userDict setObject:sEmpty forKey:str];
    sEmpty = nil;

    break;

   case 7:
    str = @"sex";
    [_userDict setObject:sEmpty forKey:str];
    sEmpty = nil;

    break;

   case 8:
    str = @"city";
    [_userDict setObject:sEmpty forKey:str];
    sEmpty = nil;

    break;

   case 9:
    str = @"bio";
    [_userDict setObject:sEmpty forKey:str];
    sEmpty = nil;

    break;

   case 10:
    str = @"address";
    [_userDict setObject:sEmpty forKey:str];
    sEmpty = nil;

    break;

   case 11:
    str = @"pincode";
    [_userDict setObject:sEmpty forKey:str];
    sEmpty = nil;

    break;

   case 12:
    str = @"bank_acc_type";
    [_userDict setObject:sEmpty forKey:str];
    sEmpty = nil;

    break;

   default:
    break;
  }


}


NSLog(@ "%@ ",_userDict);

Когда код приходит к case 11 (pincode) - текстовое поле сохраняет значение nil в sEmpty , но я ввел значения во все текстовые поля симулятора. Пожалуйста, предложите мне некоторые возможные результаты, чтобы все значения были сохранены в словаре.

P.S - если значение в текстовом поле пустое, то значение в словаре сохраняется в виде пустой строки

1 Ответ

0 голосов
/ 06 января 2019

Согласно документу Apple для cellForRowAtIndexPath: . Этот метод вернет

Объект, представляющий ячейку таблицы, или ноль, если ячейка не видна или indexPath находится вне диапазона.

Как я полагаю, табличное представление отображает 11 ячеек, а pincode - 12-я ячейка, которая не видна на экране. Таким образом, cellForRowAtIndexPath: возвращает nil для ячейки по этому пути индекса, что приводит к текстовому полю, а sEmpty равно nil.

Чтобы решить эту проблему, я предлагаю сохранить строки в массиве. Всякий раз, когда пользователь вводит текстовое поле, обновляйте строковое значение по этому индексу. Когда вам нужно строки, получить из массива вместо ячеек

...