Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用filterContentForSearchText时传递id_Ios_Objective C - Fatal编程技术网

Ios 使用filterContentForSearchText时传递id

Ios 使用filterContentForSearchText时传递id,ios,objective-c,Ios,Objective C,我正在使用filterContentForSearchText在表视图中搜索。搜索效果很好,但是当我选择一行时,我让它将该行的ID发送到我的目标视图控制器。当我进行搜索时,它仍然会发送我搜索前该行的ID。我完全明白问题是什么,但我不知道如何解决它。这就是我到目前为止所做的: - (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope { NSPredicate *resultPredica

我正在使用filterContentForSearchText在表视图中搜索。搜索效果很好,但是当我选择一行时,我让它将该行的ID发送到我的目标视图控制器。当我进行搜索时,它仍然会发送我搜索前该行的ID。我完全明白问题是什么,但我不知道如何解决它。这就是我到目前为止所做的:

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@", searchText];

    searchResults = [[projectArray valueForKey:@"clientName"] filteredArrayUsingPredicate:resultPredicate];
}

有没有一种简单的方法可以将ID添加到搜索结果中,以便我可以将其传递给dvc?

问题是,searchResults只包含每个对象的clientName 而不是全部信息。 我建议将searchResults作为projectArray的子阵列:

然后,您可以在prepareForSegue中访问projectArray或searchResults:


当然,您还必须调整cellForRowAtIndexPath以适应此更改。

太棒了,谢谢。我知道有办法做到这一点,但我不知道怎么做。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"CategorySegue"]) {
    TimeCategoryViewController *dvc = [segue destinationViewController];

    if ([self.searchDisplayController isActive]) {
        NSIndexPath *path = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
        NSNumber *pid = [[projectArray objectAtIndex:path.row] valueForKey:@"pid"];


        dvc.selectedProject = [searchResults objectAtIndex:pid];
    } else {
        NSIndexPath *path = [self.tableView indexPathForSelectedRow];
        NSNumber *pid = [[projectArray objectAtIndex:path.row] valueForKey:@"pid"];
        dvc.selectedProject = pid;
    }
}
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"clientName CONTAINS[cd] %@", searchText];
    searchResults = [projectArray filteredArrayUsingPredicate:resultPredicate];
}
if ([self.searchDisplayController isActive]) {
    NSIndexPath *path = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
    NSNumber *pid = [[searchResults objectAtIndex:path.row] objectForKey:@"pid"];
    dvc.selectedProject = pid;
} else {
    NSIndexPath *path = [self.tableView indexPathForSelectedRow];
    NSNumber *pid = [[projectArray objectAtIndex:path.row] objectForKey:@"pid"];
    dvc.selectedProject = pid;
}