Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 重复的If语句是否有替代方案?_Ios_Objective C_If Statement - Fatal编程技术网

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
,并将值设置为文本字段可以很好地工作。我认为您不能将文本字段添加为键,因为它不支持所需的协议。这与我的回答中的一点基本相同