Ios 重复的If语句是否有替代方案?
我想检查我的Ios 重复的If语句是否有替代方案?,ios,objective-c,if-statement,Ios,Objective C,If Statement,我想检查我的UITextFields中的条件,基本上,如果它改变了,如果是,我想改变数据并保存到数据库。我的代码如下所示: if (![self.nomeTextField.text isEqualToString:self.usuario[@"nome"]]) { self.usuario[@"nome"] = self.nomeTextField.text; } if (![self.sobrenomeTextField.text isEqualToString:self.usuar
UITextFields
中的条件,基本上,如果它改变了,如果是,我想改变数据并保存到数据库。我的代码如下所示:
if (![self.nomeTextField.text isEqualToString:self.usuario[@"nome"]]) {
self.usuario[@"nome"] = self.nomeTextField.text;
}
if (![self.sobrenomeTextField.text isEqualToString:self.usuario[@"sobrenome"]]) {
self.usuario[@"sobrenome"] = self.sobrenomeTextField.text;
}
if (![self.nascimentoTextField.text isEqualToString:self.usuario[@"nascimento"]]) {
self.usuario[@"nascimento"] = self.nascimentoTextField.text;
此代码位于按钮
操作方法
内。当用户按下按钮
时,它会检查更改的UITextFields
,并将值更新到my对象
。这样,我一次只建立一个网络连接来保存对象
现在,我的问题是,重复这样的if语句是否可以,以及是否有更简单的方法来实现这一点。我不关心UITextFields
,我知道我可以使用delegate
一次更改每个textField
,然后保存它。但我想了解的是我所做的是否正确,以及是否有替代这些重复的if语句的方法,我将实现UITextFieldDelegate
的textfieldDendediting:
方法,并跟踪其中编辑的字段。然后,单击按钮时,您可以浏览该列表并更新相关字段
或者您可以修改此方法,并在textfielddendediting:
中更新您的对象。我将实现UITextFieldDelegate
的textfielddendediting:
方法,并跟踪其中编辑的字段。然后,单击按钮时,您可以浏览该列表并更新相关字段
或者,您可以修改此方法,并在textfielddendediting:
中更新对象。在您的情况下,switch语句将不起作用,因为您始终希望处理所有文本字段。在这种情况下,您可以将所有文本字段放入字典中,其中键是self.usuario
字典中键的名称。然后,您可以迭代该数组,并将密钥的名称和关联的文本字段进行验证
如果要在每个文本字段更改时检查它,则需要能够将作为参数传递的文本字段与键名显式关联。这可以通过搜索来完成,或者您可以考虑使用<代码> ObjcStEngCaseObjultObj/<代码>关联密钥串。
无论哪种情况,使用一些数据结构都有助于减少代码。但这是一种权衡。减少代码通常意味着更大的内存使用量,但通常更容易理解,并且不容易出错。在您的情况下,switch语句不起作用,因为您总是希望处理所有的文本字段。在这种情况下,您可以将所有文本字段放入字典中,其中键是self.usuario
字典中键的名称。然后,您可以迭代该数组,并将密钥的名称和关联的文本字段进行验证
如果要在每个文本字段更改时检查它,则需要能够将作为参数传递的文本字段与键名显式关联。这可以通过搜索来完成,或者您可以考虑使用<代码> ObjcStEngCaseObjultObj/<代码>关联密钥串。
无论哪种情况,使用一些数据结构都有助于减少代码。但这是一种权衡。减少代码通常意味着更大的内存使用量,但它通常更容易理解,而且不容易出错。使用字典,然后循环字典中的每个键值对以检查字段,怎么样
将要检查的每个字段设置为键(例如self.nomeTextField),将测试值设置为值(self.usario[@“nome”])
然后,只需在字典中循环运行以下内容
for ($KEY in myDictionary)
if (!$KEY.text isEqualToString:$VALUE) {
DO SOMETHING HERE
}
如果您将来想要更多的领域,它的优点是易于扩展
如果我的代码/概念中存在漏洞,我深表歉意。目前我无法测试特定代码来验证功能
希望这有帮助!祝你好运 使用字典,然后循环字典中的每个键值对来检查字段怎么样
将要检查的每个字段设置为键(例如self.nomeTextField),将测试值设置为值(self.usario[@“nome”])
然后,只需在字典中循环运行以下内容
for ($KEY in myDictionary)
if (!$KEY.text isEqualToString:$VALUE) {
DO SOMETHING HERE
}
如果您将来想要更多的领域,它的优点是易于扩展
如果我的代码/概念中存在漏洞,我深表歉意。目前我无法测试特定代码来验证功能
希望这有帮助!祝你好运 你熟悉switch
/case
语句吗?你的意思是类似于a的东西吗?大概是建立一个更改属性的字典,但你总是需要有一个完整的字典…在这种情况下switch/case
将如何进行?我可以看一些代码示例吗?我不确定使用开关盒
时代码是否会更干净。谢谢。switch
对字符串比较不起作用。你熟悉switch
/case
语句吗?你的意思是类似于a的东西吗?大概是要建立一个更改属性的字典,但你总是要有一个完整的字典……在这种情况下,switch/case
会怎么样?我可以看一些代码示例吗?我不确定使用开关盒
时代码是否会更干净。谢谢。开关
无法用于字符串比较。我认为您不能添加文本字段作为密钥,因为它不支持所需的协议。这与我的答案中的一点基本相同,将键设置为nome
或sobrenome
,并将值设置为文本字段可以很好地工作。我认为您不能将文本字段添加为键,因为它不支持所需的协议。这与我的回答中的一点基本相同