Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Objective c 减少long for/if语句的长度_Objective C_Arrays - Fatal编程技术网

Objective c 减少long for/if语句的长度

Objective c 减少long for/if语句的长度,objective-c,arrays,Objective C,Arrays,我目前正在努力使我正在开发的应用程序的代码更高效、更容易阅读。基本上,这是从NSUserDefaults的玩家名称中检索一个数组,并用这些名称填充6个文本框(标记为6-11)。如果没有现有数组,它将使用另一组名称。任何简化此代码的想法都将不胜感激 if (gestureRecognizer.state == UIGestureRecognizerStateEnded) { NSMutableArray *names = [[NSMutableArray alloc] initWi

我目前正在努力使我正在开发的应用程序的代码更高效、更容易阅读。基本上,这是从NSUserDefaults的玩家名称中检索一个数组,并用这些名称填充6个文本框(标记为6-11)。如果没有现有数组,它将使用另一组名称。任何简化此代码的想法都将不胜感激

if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
        NSMutableArray *names = [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"nameArray"]];
        for (int i = 0; i <= 5; i++) {
            NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];
            UITableViewCell *cell = [playerTable cellForRowAtIndexPath:indexPath];

            for (UIView *view in cell.contentView.subviews) {
                if ([view isKindOfClass:[UITextField class]]) {
                    UITextField *txtField = (UITextField *)view;
                    if (txtField.tag == 6) {
                        if([[NSUserDefaults standardUserDefaults] boolForKey:@"customNames"]) {
                            txtField.text = [names objectAtIndex:0]; }
                        else {
                            txtField.text = @"Peter";
                        }
                    }
                    if (txtField.tag == 7) {
                        if([[NSUserDefaults standardUserDefaults] boolForKey:@"customNames"]) {
                            txtField.text = [names objectAtIndex:1]; }
                        else {
                            txtField.text = @"Julia";
                        }
                    }
                    if (txtField.tag == 8) {
                        if([[NSUserDefaults standardUserDefaults] boolForKey:@"customNames"]) {
                            txtField.text = [names objectAtIndex:2]; }
                        else {
                            txtField.text = @"Durgan";
                        }
                    }
                    if (txtField.tag == 9) {
                        if([[NSUserDefaults standardUserDefaults] boolForKey:@"customNames"]) {
                            txtField.text = [names objectAtIndex:3]; }
                        else {
                            txtField.text = @"Bob";
                        }
                    }
                    if (txtField.tag == 10) {
                        if([[NSUserDefaults standardUserDefaults] boolForKey:@"customNames"]) {
                            txtField.text = [names objectAtIndex:4]; }
                        else {
                            txtField.text = @"Iseland";
                        }
                    }
                    if (txtField.tag == 11) {
                        if([[NSUserDefaults standardUserDefaults] boolForKey:@"customNames"]) {
                            txtField.text = [names objectAtIndex:5]; }
                        else {
                            txtField.text = @"Player";
                        }
                    }
                }
            }
        }
        [self saveNames];
    }
if(gestureRecognizer.state==UIGestureRecognizerStateEnded){
NSMutableArray*名称=[[NSMutableArray alloc]initWithArray:[[NSUserDefaults standardUserDefaults]objectForKey:@“nameArray”];

对于(int i=0;i我建议对代码进行冗余分析,并在单独的方法中排除它们。因此,您必须一次又一次地只调用extern方法,而不是每个代码方。

我建议对代码进行冗余分析,并在单独的方法中排除它们。因此,您必须只调用extern方法,而不是每个Code-p一次又一次的艺术。

你可以这样做:

NSArray *defaultNames = @[@"Peter", @"Julia",...];
int offsetIndex = 6;
BOOl needCustomNames = [[NSUserDefaults standardUserDefaults] boolForKey:@"customNames"];
for (UIView *view in cell.contentView.subviews)
{
    if ([view isKindOfClass:[UITextField class]]) 
    {
        UITextField *txtField = (UITextField *)view;
        int index = [txtField tag]-offsetIndex;
        if (tag >= 6 && tag <= 11)
        {
            if (needCustomNames)
                textField.text = [names objectAtIndex:index];
            else
                textField.text = [defaultNames objectAtIndex:index];
        }
    }
}
NSArray*defaultNames=@[@“Peter”,“Julia”,“…];
int offsetIndex=6;
BOOl needCustomNames=[[NSUserDefaults standardUserDefaults]boolWorkey:@“customNames”];
for(UIView*cell.contentView.subview中的视图)
{
if([view iskindof类:[UITextField类]])
{
UITextField*txtField=(UITextField*)视图;
int index=[txtField tag]-offsetIndex;
如果(tag>=6&&tag您可以这样做:

NSArray *defaultNames = @[@"Peter", @"Julia",...];
int offsetIndex = 6;
BOOl needCustomNames = [[NSUserDefaults standardUserDefaults] boolForKey:@"customNames"];
for (UIView *view in cell.contentView.subviews)
{
    if ([view isKindOfClass:[UITextField class]]) 
    {
        UITextField *txtField = (UITextField *)view;
        int index = [txtField tag]-offsetIndex;
        if (tag >= 6 && tag <= 11)
        {
            if (needCustomNames)
                textField.text = [names objectAtIndex:index];
            else
                textField.text = [defaultNames objectAtIndex:index];
        }
    }
}
NSArray*defaultNames=@[@“Peter”,“Julia”,“…];
int offsetIndex=6;
BOOl needCustomNames=[[NSUserDefaults standardUserDefaults]boolWorkey:@“customNames”];
for(UIView*cell.contentView.subview中的视图)
{
if([view iskindof类:[UITextField类]])
{
UITextField*txtField=(UITextField*)视图;
int index=[txtField tag]-offsetIndex;

如果(tag>=6&&tag)这个问题可能会更好地被问到。谢谢,我已经把它贴在那里了。这个问题可能会更好地被问到。谢谢,我已经把它贴在那里了。回答很好。但是如果你的标签值是随机的(比如2,23,65),那么你可能会面临这个问题。对于一般情况,你可以使用Switch语句。它会简单而快速。“switch语句”将只执行正确的大小写,而不完全像“if语句”。@Dale TownsendNice回答得很好。但如果您的标记值是随机的(如2、23、65),那么您可能会面临问题。对于一般情况,您可以使用switch语句。它将简单而快速。“switch语句”将只执行正确的大小写,而不完全像“if语句”“@Dale Townsend