Нужна помощь с этим утверждением "если" в Objective-C, как отобразить? - PullRequest
0 голосов
/ 10 апреля 2011

Я пытаюсь отобразить все объекты в этом массиве (префиксы) с переменной sufField в списке.

    if (newsPre.on = YES)
    {
        NSArray *newsArray = [NSArray AarrayWithObjects = @"News", @"Latest", @"Trending", nil;]
        for(int i=0, i<3, ++i;)
        {
            NSString *newText = [NSString stringWithFormat:@"%@", sufField, newsArray objectAtIndex: i];
            display.text=newText;
        }

    }

Например, если sufField = "channel" желаемый вывод...

Newschannel
Latestchannel
Trendingchannel

Я получаю различные ошибки сборки, такие как "Ожидаемый"] перед "=" токеном "в строке NSArray ..... и другие, имеющие дело с" для"Заявление.

Пожалуйста, помогите!спасибо!

Ответы [ 3 ]

2 голосов
/ 10 апреля 2011

О человек ...

if (newsPre.on = YES) {

Вам нужны два знака равенства. В противном случае вы вызываете метод установки. (Видите? Синтаксис Dot - это плохо!) В нынешнем виде это говорит: if ([newsPre setOn:YES]) {. То, что вы хотите, это либо newsPre.on == YES, либо [newsPre on] == YES.

    NSArray *newsArray = [NSArray AarrayWithObjects = @"News", @"Latest", @"Trending", nil;]

Сначала точка с запятой идет после скобки. Это должно быть последней вещью на линии. Кроме того, «AarrayWithObjects» должен быть «arrayWithObjects», а дополнительный «=» в середине строки должен быть «:».

    for(int i=0, i<3, ++i;) {

Эти запятые должны быть точками с запятой

        NSString *newText = [NSString stringWithFormat:@"%@", sufField, newsArray objectAtIndex: i];

У вас есть только один модификатор замещения (%@), но вы пытаетесь подставить 2 значения. Кроме того, вам нужно скобки вокруг "newsArray objectAtIndex:i"

        display.text=newText;

Ура! Синтаксически правильная строка! Однако это происходит на каждой итерации цикла. Поэтому каждый раз, когда вы зацикливаетесь, вы меняете текст display. Вы уверены, что это то, что вы хотите?

    }

Это нормально

}

Это тоже нормально.

В итоге: изучите синтаксис.

0 голосов
/ 10 апреля 2011
if (newsPre.on == YES)
{
    NSArray *newsArray = [NSArray arrayWithObjects: @"News", @"Latest", @"Trending", nil];
    for(int i=0; i<3; ++i)
    {
        NSString *newText = [NSString stringWithFormat:@"%@%@", sufField, [newsArray objectAtIndex: i]];
        display.text=newText;
    }

}

Это должно работать.

г. Мы забыли, что newsArray objectAtIndex: у меня должны быть квадратные скобки, ваша строка с форматом похожа на инструкцию printf: поэтому вам нужны теги для обоих объектов.

0 голосов
/ 10 апреля 2011

Ваш цикл for должен выглядеть следующим образом:

for(int i = 0; i < 3; ++i)

Вы должны использовать точки с запятой, а не запятые, для разделения трех компонентов цикла for.

ВашNSArray проблема, вероятно, связана с тем, что у вас нет завершающей точки с запятой в конце закрывающей скобки, а синтаксис отправки вашего сообщения неверный;это:

[NSArray AarrayWithObjects = @"News", @"Latest", @"Trending", nil;]

, вероятно, должно быть:

[NSArray arrayWithObjects: @"News", @"Latest", @"Trending", nil];

, поскольку вы отправляете сообщение arrayWithObjects в класс NSArray.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...