Как добавить значение в массив сверхурочных пользователя, нажав на следующую кнопку в xcode? - PullRequest
1 голос
/ 11 мая 2011

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

- (IBAction)Next:(id)sender {

    // Do any additional setup after loading the view from its nib.

    //generate random number - result is a range of 0-10   
    int randomnumber = (arc4random() % 10);

   // Add the random number into array
   [myArray addObject:[NSNumber numberWithInt:randomnumber]];

    // easy way to look what is now in the array
        NSLog([myArray description]);

     NSString *fileName = [NSString stringWithFormat:@"File_no_%d", randomnumber +1];

    //render a complete file-path out of our filename, the main-bundle and the file-  extension

    NSString *filePath=[[NSBundle mainBundle] pathForResource:fileName ofType:@"txt"];

    //fetch the text content from that file

    NSString *myText= [NSString stringWithContentsOfFile:filePath
                                                encoding:NSUTF8StringEncoding
                                                   error:nil];

    //hand that text over to our textview

    TextView.text=myText;
}

- (IBAction)Back:(id)sender {

    NSNumber *last_array_num = [myArray objectAtIndex:myArray.count - 1];

   // read the file name based on the last number in array

    NSString *fileName = [NSString stringWithFormat:@"File_no_%d", last_array_num ];
}

1 Ответ

0 голосов
/ 11 мая 2011

Вы говорите, что инициализируете массив в методе Next, а также добавляете к нему? Если это так, массив должен быть инициализирован вне этого метода и только один раз. Это сохраняет ваши данные нетронутыми, в противном случае они будут перезаписаны при следующей инициализации.

Вы добавляете в массив просто отлично, так что вам не нужно ничего менять. Что касается чтения числа в вашем методе Back, вам просто нужно иметь следующую строку кода:

РЕДАКТИРОВАТЬ: это код, который вы будете использовать, чтобы получить результаты, которые вы хотите из вашего массива. Кроме того, формальный подход состоит не в том, чтобы начинать с заглавных букв в вашем коде, если он не определяет класс (например, NSString). Для таких методов вы должны использовать что-то вроде - (IBAction)backButton:(id)sender. Это не имеет большого значения, и ваш код будет работать нормально, но это всего лишь этикет и в долгосрочной перспективе ваш код будет немного менее запутанным. У меня есть чувство, что кто-то может сказать что-то об этом позже, поэтому я просто сообщаю вам заранее. Во всяком случае, вот код, который вы хотите

ВТОРОЕ РЕДАКТИРОВАНИЕ: Как вы и думали, вы должны создать переменную, из которой можно прочитать код. В заголовочном файле добавьте это

int arrayCount;

В вашем коде после создания myArray установите arrayCount

arrayCount = [myArray count];

Это также следует сделать, если добавить или удалить какие-либо объекты из массива.

Тогда в вашем методе действия вы можете вызывать файлы

- (IBAction)Back:(id)sender {
    NSString *filePath = [NSString stringWithFormat:@"File_no_%d", [[myArray objectAtIndex:arrayCount - 1] intValue]];

    // make sure you aren't going beyond the bounds of the array;
    if (arrayCount > 1) {
        // decrease the count of the arrayCount;
        arrayCount--;
    }
}

Использование этого параметра позволит вам перемещаться назад по массиву на один шаг при каждом нажатии кнопки. Опять же, если это не то, что вы ищете, просто дайте мне знать, и мы разберемся с этим

...