gpt4 book ai didi

ios - 试图了解 didselectrowatindexpath 发生了什么。应用程序崩溃,消息索引 1 超出范围 [0 .. 0]'

转载 作者:行者123 更新时间:2023-11-28 22:19:42 24 4
gpt4 key购买 nike

我试图了解我的代码发生了什么。

当我选择数组中的一项时,应用程序崩溃了。基本上,她用户选择一行它应该打开一个新的 TableView ,其中包含所选行的数据,但它只适用于一行,我猜我的数组在我过滤(搜索栏)时只有一个结果,当我单击索引 1 处的对象会崩溃。但这只是一个猜测,我无法修复它。

我有两个 NSArrays

@implementation BuscaDadosNoBanco

{
NSArray *searchResults;
NSArray *todosUsuarios;
}

这是表格的代码:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView == self.searchDisplayController.searchResultsTableView) {
return [searchResults count];

} else {
return [todosUsuarios count];

}
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"RecipeCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
cell.textLabel.text = [searchResults objectAtIndex:indexPath.row];

return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == self.searchDisplayController.searchResultsTableView) {
NSLog(@"%@", searchResults);
NSLog(@"%@", _arrayComDados);

[self performSegueWithIdentifier: @"segueDetalhesUsuario" sender: self];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"segueDetalhesUsuario"]) {
DetalhesUsuario *destViewController = segue.destinationViewController;

NSIndexPath *indexPath = nil;
if ([self.searchDisplayController isActive]) {
indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
Usuario *usuario = [[Usuario alloc] init];
[usuario recuperaDadosUsuario:_arrayComDados eEmail:[searchResults objectAtIndex:indexPath.row]];
destViewController.dadosUsuario = usuario;

} else {
indexPath = [self.tableView indexPathForSelectedRow];
destViewController.dadosUsuario = [todosUsuarios objectAtIndex:indexPath.row];
}
}

}

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"usuario.username contains [cd] %@", searchText];
NSArray *filtroUsuario = [_arrayComDados filteredArrayUsingPredicate:predicate];
searchResults = [filtroUsuario valueForKeyPath:@"@distinctUnionOfObjects.usuario.username"];
NSLog(@"%@", searchResults);
}

#pragma mark - UISearchDisplayController delegate methods
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchString:(NSString *)searchString
{
[self filterContentForSearchText:searchString
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:[self.searchDisplayController.searchBar
selectedScopeButtonIndex]]];

return YES;
}

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchScope:(NSInteger)searchOption
{
[self filterContentForSearchText:[self.searchDisplayController.searchBar text]
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:searchOption]];

return YES;
}

每当我在搜索栏中输入正确的字母时,日志都会显示一个电子邮件字符串,如 "blabla@bla.com"。我的数组中有两个项目,一个在我选择它时正在工作,它正确地填充了下一个表格 View ,但是当我尝试另一个时,尽管它在日志中显示了正确的电子邮件,但应用程序崩溃并显示消息:- [__NSArrayI objectAtIndex:]:索引 1 超出范围 [0 .. 0]

如果您需要任何其他信息,请告诉我。我真的需要帮助。

谢谢

最佳答案

你的代码有问题!

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if (tableView == self.searchDisplayController.searchResultsTableView) {
return [searchResults count];
} else {
return [todosUsuarios count];
}
}

在这里您检查使用哪个数组但是当您创建单元格时您不检查应该使用哪个数组

cell.textLabel.text = [searchResults objectAtIndex:indexPath.row];

因此,当行数来自 todosUsuarios 但您尝试从 searchResults 获取元素时,您会遇到这种情况

关于ios - 试图了解 didselectrowatindexpath 发生了什么。应用程序崩溃,消息索引 1 超出范围 [0 .. 0]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20759788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com