iOS Beginner: NSMutableArray + переменная int для хранения позиции индекса массива (где находится соединение) - PullRequest
1 голос
/ 08 декабря 2011

У меня есть рабочий код (запрограммированный в учебном пособии), но мне нравится погружаться немного глубже.

Следующая ситуация:

У меня есть массив с вопросами и один массив с ответами

Когда пользователь нажимает кнопку «Показать вопрос», метод смотрит, где мы находимся в массиве, и отображает либо следующий вопрос в массиве, либо возвращается к началу и показывает Первый вопрос, который мы имеем в нашем массиве.

H ФАЙЛ:

#import <UIKit/UIKit.h>

@interface QuizAppDelegate : NSObject <UIApplicationDelegate>
{
    IBOutlet UIWindow *window;

    NSMutableArray *answers;
    NSMutableArray *questions;

    IBOutlet UILabel *answersField;
    IBOutlet UILabel *questionsField;

    int currentQuestionIndex;
}

@property (retain, nonatomic) UIWindow *window;


- (IBAction)showQuestion:(id)sender;
- (IBAction)showAnswer:(id)sender;


@end

M FILE (только метод кнопки)

- (IBAction)showQuestion:(id)sender
{
    // Step to the next question
    currentQuestionIndex++;

    // Am I past the last question?
    if (currentQuestionIndex == [questions count]) {
        // Go back to the first question
        currentQuestionIndex = 0;
    }
    // Get the string at that index in the questions array.

    NSString *question = [questions objectAtIndex:currentQuestionIndex];

    // Displaying the string in the questions field.

    [questionsField setText:question];

    // Clear the answer field:

    [answersField setText:@"???"];
}

Все работает, но я не понимаю, где связь между Переменная int currentQuestionIndex и индекс в NSMutableArray.

В настоящее время, когда мой int currentQuestionIndex сообщает 2, вопрос сохраняется в массиве в позиции № 2, но как это возможно?

Для меня похоже, что мы не подключили переменную int currentQuestionIndex с индексом в массиве мы только что объявили, что есть переменная int в заголовочном файле.

Может быть, глупый вопрос .... или просто важно, какое реальное число я получу?

Например, я получаю 2 обратно от int, чтобы я мог ссылаться на 2 в массиве, и нет Требование присоединить / подключить их.

Надеюсь, что вы можете следовать;)

Ответы [ 2 ]

0 голосов
/ 08 декабря 2011

Не совсем уверен, что вы пытаетесь сказать. Но questions это массив. Доступ к массивам осуществляется через индексы. первый элемент в 0, второй в 1 и т. д.

То есть ваш currentQuestionIndex действует как число для доступа к этому местоположению в этом массиве. Также вместо этого -

if (currentQuestionIndex == [количество вопросов]) { // Вернемся к первому вопросу currentQuestionIndex = 0; }

использовать modulus -

currentQuestionIndex ++;
NSString *question = [questions objectAtIndex:currentQuestionIndex % [questions count]];
0 голосов
/ 08 декабря 2011

Это магия Objective-C!: D

Subj:

Эта строка кода

NSString *question = [questions objectAtIndex:currentQuestionIndex];

Придает строковому вопросу значение из вопросов массива с индексом currentQuestionIndex.И эта строка:

if (currentQuestionIndex == [questions count])

проверяет, равно ли currentQuestionIndex общему количеству элементов в массиве вопросов.

Надеюсь, это поможет

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