我需要一个在IOS中有8个插值字符串的可变数组

时间:2016-07-13 04:24:41

标签: ios objective-c arrays

我是IOS的新手,我不确定自己是否走在正确的轨道上。我需要知道的是,如果我走在正确的轨道上,如果我关闭了它,那么我可以回到正轨。可变阵列应该读取一组扬声器并说“Hello, my name is <speakerArray>”它应该每次使用不同的名称执行8次。这就是我所拥有的:

- (NSArray*)badgesForSpeakers:(NSArray*)speakers {
    for(speakers i = 0; i => 7; i++)
    {
        NSString *greetings =@"Hello, my name is .";
        NSMutableArray *badges = [speakers arrayByAddingObjectsFromArray:greetings];
    }

    return badges;
}

3 个答案:

答案 0 :(得分:1)

也许你的意思是

- (NSMutableArray *)badgesForSpeakers:(NSArray *)speakers {
    NSMutableArray *badges = [[NSMutableArray alloc] init];
    for (NSString *speaker in speakers) {
        [badges addObject:[NSString stringWithFormat:@"Hello, my name is %@", speaker]];
    }
    return badges;
}

答案 1 :(得分:1)

使用此代码

 - (NSArray*)badgesForSpeakers:(NSArray*)speakers {
       NSMutableArray *badges = [NSMutableArray alloc];
        for(int i = 0; i < speakers.count; i++)
        {
            NSString *greetings =[NSString stringWithFormat:@"Hello, my name is .%@",[speakers objectAtIndex:i]];
            badges = [speakers addObject:greetings];
        }

        return [badges copy];
    }

答案 2 :(得分:1)

让我们一步一步走。首先,你的操作员在循环中是错误的;您的意思是在i less 大于或等于7时执行。因此,请将=>更改为<=。但是,说i < 8更时尚。最后,使用所谓的“快速枚举”是最时尚的,它允许你在没有索引的情况下循环。事实上,无论你的speakers数组中有多少项,它都会有效!这就把我们带到了这里:

- (NSArray*)badgesForSpeakers:(NSArray*)speakers {
    for (NSString* speaker in speakers)
    {
        NSString *greetings =@"Hello, my name is .";
        NSMutableArray *badges = [speakers arrayByAddingObjectsFromArray:greetings];
    }

    return badges;
}

接下来,greetings不是数组!这是一个字符串。这就是为什么调用-arrayByAddingObjectsFromArray:没有任何意义,以及为什么编译器不喜欢它。让我们的名字单数,greeting,以反映这一事实。 策略:您的目标是创建一个空数组,然后逐个构造项目并将它们添加到该数组中。这需要我们:

- (NSArray*)badgesForSpeakers:(NSArray*)speakers {
    NSMutableArray *badges = [NSMutableArray array]; //Here we make an empty array
    for (NSString* speaker in speakers)
    {
        NSString *greeting =@"Hello, my name is .";
        [badges addObject:greeting]; //Here we add one item to it each time 'round the loop
    }
    return badges;
}

最后,你的字符串现在没有插值!它按字面意思 “你好,我的名字是。”我们使用-stringWithFormat:方法进行字符串插值。

成品:

- (NSArray*)badgesForSpeakers:(NSArray*)speakers {
    NSMutableArray *badges = [NSMutableArray array];
    for (NSString* speaker in speakers)
    {
        NSString *greeting = [NSString stringWithFormat:@"Hello, my name is %@.",speaker];
        [badges addObject:greeting];
    }
    return badges;
}

这应该让你开始快速枚举和字符串插值。请记住经常编译代码并尝试理解编译器错误 - 它可以帮助您解决其中的一些问题。