从目标 c 中的 NSMutableArray 获取错误的 id

Getting Wrong id from NSMutableArray in objective c

提问人:Muju 提问时间:10/12/2016 最后编辑:Muju 更新时间:10/13/2016 访问量:131

问:

我是 iOS 的新手,当我在搜索后在文本框中添加搜索框时,给了我错误的 ID。在我的代码中,有三个数组,一个用于 id,另一个用于名称,第三个用于搜索。

我的代码:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)sections{
    if(tableView == table)
    {
        if(isFilter)
        {
            return [searchArray count];
        }
        else
        return [idarray count];
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(tableView == table)
    {
        if(isFilter)
        {
            cell.textLabel.text=[NSString stringWithFormat:@"%@",[searchArray objectAtIndex:indexPath.row]];
        }
        else
        {
            cell.textLabel.text=[NSString stringWithFormat:@"%@",[namearray objectAtIndex:indexPath.row]];
        }
    }
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
        if(tableView == table)
        {
            if(isFilter)
            {
                txt.text=[searchArray objectAtIndex:indexPath.row];
                table.hidden=YES;
                txt.enabled=NO;
                txt.text=[NSString stringWithFormat:@"%@",[namearray objectAtIndex:indexPath.row]];
                idlbl.text=[NSString stringWithFormat:@"%@",[idarray objectAtIndex:indexPath.row]];
                EmployeeID=idlbl.text;
                EmployeeName=txt.text;

            }
            else
            {
                txt.text=[NSString stringWithFormat:@"%@",[namearray objectAtIndex:indexPath.row]];
                idlbl.text=[NSString stringWithFormat:@"%@",[idarray objectAtIndex:indexPath.row]];
                table.hidden=YES;
                EmployeeID=idlbl.text;
                EmployeeName=txt.text;
                txt.enabled=NO;
            }

        }
}

-(void)textFieldDidChange:(UITextField *)textField
{
    searchTextString=textField.text;
    [self updateSearchArray:searchTextString];
}
-(void)updateSearchArray:(NSString *)searchText
{
    if(searchText.length==0)
    {
        isFilter=NO;
    }
    else{

        isFilter=YES;
        searchArray=[[NSMutableArray alloc]init];
        for(NSString *string in namearray){

            NSRange stringRange=[string rangeOfString:searchText options:NSCaseInsensitiveSearch];
            if(stringRange.location !=NSNotFound){

                [searchArray addObject:string];
            }
        }
        [table reloadData];}
}

我将 EmployeeID 获取为 1,其中 EmployeeID 为 18,它采用表中的值,而不是获取 id 数组的值。我正在使用 if(tableview == table),因为一个视图控制器中有多个表。enter image description here它还在更新 id.,如图所示enter image description here

但我不需要更新 idarray。我的问题是我怎样才能得到数组的值,它给了我一个tableview单元格的索引路径 任何建议 提前致谢!

iOS Objective-C JSON XML 解析

评论

0赞 Himanshu Moradiya 10/12/2016
在你的 didselectRowAtIndexPath 方法中,你比较了你的数组 (int i1=0 ; i1<[YOURORIGNALARRAY count]; i1++) { if ([SEARCHARRAY objectAtIndex:indexPath.row]==[[YOURORIGNALARRAY valueForKey:@“YOURKEY”] objectAtIndex:i1]) { } }
0赞 Droppy 10/12/2016
1.根据您是否正在搜索,有一个供tableview使用并指向正常搜索数组会更干净;这将消除对条件的需求。2. 您是否确保模型数组包含正确的数据?3. 名称数组的大小如何与普通数组和过滤数组相同?NSArray *if (isFilter)
0赞 Muju 10/12/2016
@himanshu为什么我将 idarray 设置为 1,而它是 18。
0赞 Himanshu Moradiya 10/12/2016
你有没有给我看过你的数组,那个原始数组和你的搜索数组。
0赞 Muju 10/12/2016
@himanshu是的。

答:

0赞 Purushothaman 10/12/2016 #1

当我曾经在我的应用程序中的搜索栏按钮上工作时,我也遇到了同样的问题,但是我已经创建了充当搜索栏的文本框。

我以为这对你来说也很好,快乐编码.......

点击这里

评论

0赞 Muju 10/12/2016
我正在使用相同的代码。但问题是这段代码只有名称,但我的数组有名称和 id。它是字典。
0赞 Muju 10/12/2016
当我从 18 搜索到 1 时,我的 ID 数组也会更新
0赞 Himanshu Moradiya 10/13/2016 #2

检查此文件以创建一个阵列,并使用 NSPredicate 对该阵列执行搜索

https://gist.github.com/himanshu-benzatine/716fd8d7ca035a5c0a01c87df48915bf