2015-12-10 2 views
1

Я пытаюсь создать динамическое верхнее меню. Мне нужно получить некоторые данные из запроса json и отобразить эти данные в одном из разделов верхнего меню. Я новичок в Objective-C. Я также пробовал с NSMutableArrays, и у меня была ошибка. Только один MutableArray и я могу показать верхнее меню. Я следую этой сторонней структуре для верхнего меню «https://github.com/dopcn/DOPNavbarMenu».попытка вставить нулевой объект из объектов [0] в объекте-c

- (DOPNavbarMenu *)menu { 
    if (_menu == nil) { 
     [strArray objectAtIndex:0]; 

     NSLog(@"Random Selection is:%@",strArray); 

     _menu = [[DOPNavbarMenu alloc] initWithItems:@[strArray] width:self.view.dop_width maximumNumberInRow:_numberOfItemsInRow]; 
     _menu.backgroundColor = [UIColor blackColor]; 
     _menu.separatarColor = [UIColor whiteColor]; 
     _menu.delegate = self; 
    } 

    return _menu; 
} 

-(void)loadData 
{ 
    strResponse=[dictionary objectForKey:@"data"]; 

    strMsg=[strResponse valueForKey:@"Text"]; 

    NSLog(@“string message is :%@",strMsg); 
    NSLog(@"String Response is :%@",strResponse); 
    NSLog(@"Text Response is: %@",strMsg); 

    strArray = [[NSMutableArray alloc] init]; 

    [strArray addObject:strMsg]; 

    NSLog(@"Array values are - %@", strArray); 
} 

Значения массива: Стиль жизни, Планы ухода, Трекеры/Дневники, Анкеты/Оценки.

, но я получил исключение вроде этого:

* Нагрузочное приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: «* - [__ NSPlaceholderArray initWithObjects: Кол-во:]: попытке вставить ноль объект из объектов [0]

+0

Пожалуйста, поместите свой код в теги кода (4 пробела) –

+0

@ AminNegm-Awad Спасибо за ваш ответ. но я не могу получить вас. – Surya

+0

user3201089 или Surya, пожалуйста, прочитайте документацию SO. Кодовую цитату следует отформатировать как код. –

ответ

1

Хорошо, за ваш комментарий

, но я хочу, чтобы вызвать метод меню до конца LoadData эс

вопрос находится здесь:

_menu = [[DOPNavbarMenu alloc] initWithItems:@[strArray] width:self.view.dop_width maximumNumberInRow:_numberOfItemsInRow]; 

Перед loadData запускается, я предполагаю, что strArray является nil. Это приводит к сбою этой части @[strArray] - это создает новый массив с strArray как его единственный элемент, который не может быть nil.

Я также предполагаю, что вы хотели скорее пройти strArray сам там, а не переносить его в другой массив.

Теперь, если вы звоните menu, прежде чем заселять strArray в loadData, там, вероятно, будет никаких элементов, присутствующих в меню, если у вас есть возможность обновить его новыми элементами после loadData отделки.

Резюмируя: исправить вашу непосредственную проблему, вы должны изменить эту строку так:

_menu = [[DOPNavbarMenu alloc] initWithItems:strArray width:self.view.dop_width maximumNumberInRow:_numberOfItemsInRow]; 

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

+0

Спасибо за ваш отзыв .. но я получил nil value.Random Selection: (null) –

+0

Да, как я уже сказал - в вашем коде вы создаете 'strArray' в' loadData'. Если метод 'menu' вызывается до' loadData', то 'strArray' обязательно будет' nil'. В идеале вы создадите свое меню, загрузите данные из Интернета и затем обновите меню. – Losiowaty

+0

мой проблема исправление.но в меню нет элементов –

Смежные вопросы