Невозможно получить NSEnumerator для отображения следующего элемента в моем массиве
Я новичок в Objective-C, и я исследовал это онлайн в течение нескольких недель. Почти все примеры одинаковы на каждом сайте и не дают мне полной ясности, как интегрировать их в мой код для приложения Xcode 4.
Пример, который можно увидеть повсюду:
NSEnumerator* theEnum = [some_array objectEnumerator];
id obj; or id some_object = NULL;
while(obj = [theEnum nextObject]) {
//do something...
Я думаю, что если бы я лучше понял, что id some_object = NULL;/ id obj; представляет, я мог бы понять это самостоятельно.
В моем коде у меня есть три массива. Я хочу иметь возможность отображать один объект в каждом массиве в поле UILabel каждый раз, когда пользователь нажимает кнопку "Далее", пока все они не будут отображены.
NSArray1 = 1,2,3
NSArray2 = Джон, Джилл, Джош NSArray3 = мальчик, девочка, мальчик
При нажатии следующей кнопки вы увидите 1, Джон и мальчик. В следующий раз вы увидите 2, Джилл и девушка и, наконец, 3, Джош и мальчик.
Ниже приведен базовый пример, а не мой код.
number = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", nil];
name = [[NSArray alloc] initWithObjects:@"John",@"Jill",@"Josh", nil];
gender = [[NSArray alloc] initWithObjects:@"boy",@"girl",@"boy", nil];
NSEnumerator *enum = [number objectEnumerator];
id obj; (??What is this?? And how to connect to the statement below??)
while ((obj = [enumNumber nextObject])) {
self.numberItem.text = ??
self.nameItem.text = ??
self.genderItem.text = ??
Спасибо
1 ответ
id obj
это просто переменная, содержащая текущую переменную, на которую вы смотрите. В этом коде, так как ваш NSArray
Все они содержат строку, вы можете использовать NSString *obj
вместо.
Перечислитель может перечислять только одну коллекцию за раз. Если вы хотите перебрать все три из них вместе, используйте традиционный for
цикл:
for(unsigned int i = 0; i < number.count; i++) {
self.numberItem.text = [number objectAtIndex:i];
self.nameItem.text = [name objectAtIndex:i];
self.genderItem.text = [gender objectAtIndex:i];
}