“objectAtIndex”的NSUserDefaults错误

时间:2013-02-28 03:25:34

标签: objective-c arrays nsuserdefaults

在这行代码上收到错误消息:

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

错误是“使用未声明的标识符'indexpath'”...但是我不确定除了 indexpath.row 之外我会在 objectAtIndex:上放置什么,因为这对我来说在这个应用程序的TableView部分有用。

大图,我正在尝试使用NSUserDefaults保存所选的团队名称。团队名称通过JSON从Web服务中提取。

以下是我到目前为止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];

感谢您的帮助!如果需要更多信息,或者如果需要我可以帮助澄清,请告诉我。

修改 - 我在错误下面的viewDidLoad中添加了一个NSLog,看看我得到了什么,然后它返回null:NSLog(@"object at index: %@", team.abbreviation);

1 个答案:

答案 0 :(得分: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

希望它有所帮助!