从文本字段中获取值并将它们存储在Objective-C中的字典中

Posted

技术标签:

【中文标题】从文本字段中获取值并将它们存储在Objective-C中的字典中【英文标题】:Get values from textfield and store them in dictionary in Objective - C 【发布时间】:2019-01-06 06:57:00 【问题描述】:

我在tableviewcell 中有一个textfield。单击按钮时,我想将文本字段中的值存储在字典中。 但是其中一个文本字段返回 nil,尽管其中有值。

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) - 文本字段在 sEmpty 中存储 nil 值,但我在模拟器的所有文本字段中输入了值。 请建议我一些可能的结果,以便所有值都存储在字典中。

P.S - 如果文本字段中的值为空,则字典中的值将存储为空字符串

【问题讨论】:

您的整个方法都不正确。不要使用单元格来存储文本。不要迭代索引路径以获取所有单元格以获取每段文本。那永远行不通。一旦任何给定的文本字段不再是第一响应者,您就需要更新您的数据模型。 哦,你能通过代码告诉我正确的方法吗? @rmaddy 我同意@rmaddy。如果单元格超过给定数量,我什至不确定您的视图实现是否有效,因为当单元格消失(即当用户滚动表格视图时)然后重新出现时,我相当确定它的内容将为空跨度> 【参考方案1】:

根据 Apple 的 cellForRowAtIndexPath: 文档。这个方法会返回

表示表格单元格的对象,如果单元格不可见或 indexPath 超出范围,则为 nil。

我猜,表格视图显示 11 个单元格,pincode 是第 12 个单元格,在屏幕上不可见。这使得cellForRowAtIndexPath: 为该索引路径处的单元格返回nil,导致文本字段和sEmptynil

为了解决这个问题,我建议将字符串保存在一个数组中。每当用户在文本字段上键入时,更新此索引处的字符串值。当你需要字符串时,从数组而不是单元格中获取

【讨论】:

我该如何克服这种情况?? 我没有足够的关于您的代码的信息来执行此操作。如我所见,您将_userDict 作为模型。您现在应该做的是在文本字段更改时更新_userDict 我想知道在更改文本字段时应该调用哪些方法 你应该在单元的类中实现一些逻辑。例如,您可能(例如)在textfieldDidEndEditing 被触发时发布通知,并在包含视图控制器中收听该通知。或者将视图控制器设置为单元格的委托,并从单元格调用委托方法(同样,当用户结束编辑文本字段时)。

以上是关于从文本字段中获取值并将它们存储在Objective-C中的字典中的主要内容,如果未能解决你的问题,请参考以下文章

从 Oracle Apex 页面获取多个值并将其存储在表中

如何使用 jQuery 获取复选框的值并将它们吐到不同的表单字段中

如何从文本字段中获取值并将其传递给变量?

在 Objective-C 中将货币字符串转换为浮点数

如何从服务器端 JavaScript 获取值并将它们存储在 Swift 的 plist 中?

点击保存按钮并存储在字典中时获取表格视图单元格中的文本字段?