2013-02-28 5 views
3

Получение сообщения об ошибке на этой строке кода:NSUserDefaults ошибка для «objectAtIndex»

Team *team = [leagueLocal.teams objectAtIndex:indexpath.row]; 

Ошибка «Использование необъявленной идентификатора" indexpath»... но я не уверен, что я бы поставил на objectAtIndex: кроме indexpath.row, потому что thats то, что работает для меня в TableView часть этого приложения.

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

Вот полный код части NSUserDefaults у меня до сих пор:

// Create User Defaults Variable 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    // Tell it where to look 
Sport *sportLocal = [sports objectAtIndex:0]; 
League *leagueLocal = [sportLocal.leagues objectAtIndex:0]; 
Team *team = [leagueLocal.teams objectAtIndex:indexpath.row]; // This is where error is 

    // Store the data, this is the stuff I want to save 
[defaults setObject:team.abbreviation forKey:[NSString stringWithFormat:@"teamAbbreviation%d", _buttonNumber]]; 

    // After saving, synchronize data 
[defaults synchronize]; 

Спасибо за помощь! Дайте мне знать, нужна ли какая-либо информация, или где я могу помочь уточнить, если это необходимо.

Редактировать - Я добавил NSLog в моей viewDidLoad прямо под ошибкой, чтобы увидеть, что я получал, и он вернулся нуль: NSLog(@"object at index: %@", team.abbreviation);

+2

Если вы используете это в 'cellForRowAtIndexPath', например, имя вашей переменной -' indexPath' (обратите внимание на верхний регистр P). –

+0

Проверьте URL-адрес указателя ur по тому, является ли ur имеющим правильное значение r переменной indexpath. – Ganapathy

+0

@Scott В моем представленииDidLoad, и даже когда я меняю его на просто 'indexPath', он все равно сталкивается с той же ошибкой. Есть предположения? – Realinstomp

ответ

7

Если это внутри viewDidLoad, то если вы не инициализирован indexPath недействительна. Он действителен только в ваших методах tableView, потому что он передается через функцию.

У вас есть несколько вариантов, чтобы захватить indexPath, что ваш ищет хотя:

Team *team = [leagueLocal.teams objectAtIndex:[NSIndexPath indexPathForRow:i inSection:k]; 
//where i and k are integers that indicate the row/section for the tableViewCell your looking for...(k would just be equal to 0 if you only have one section) 

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

NSIndexPath *indexPath=[self.tableView indexPathForSelectedRow]; 
Team *team = [leagueLocal.teams objectAtIndex:indexPath.row];//now you can use it the way you have it written in your question 

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

+0

Это отлично работает! Большое спасибо за помощь! – Realinstomp

+0

В любое время! Рад был помочь! –