如何在IOS中从UITableView搜索多个NSArray

如何在IOS中从UITableView搜索多个NSArray,ios,uitableview,nsarray,uisearchbar,Ios,Uitableview,Nsarray,Uisearchbar,我想要的是能够搜索UITableView,并将其他数组缩小到单元格textlabel数组的结果。这可能对任何人都没有意义。这里有一个例子 一个名为titleArray的数组,用于填充单元格的文本标签: "Toyota Yaris" "Ford Escape" "Ford F-150" 搜索“Ford”时,我希望UITableView显示如下单元格: Cell 1: Ford Escape SUV Cell 2: Ford F-150 Truck Cell 1:

我想要的是能够搜索
UITableView
,并将其他数组缩小到单元格textlabel数组的结果。这可能对任何人都没有意义。这里有一个例子

一个名为
titleArray
的数组,用于填充单元格的文本标签:

"Toyota Yaris" "Ford Escape" "Ford F-150" 搜索“Ford”时,我希望UITableView显示如下单元格:

Cell 1: Ford Escape SUV Cell 2: Ford F-150 Truck Cell 1: Ford Escape Car Cell 2: Ford F-150 SUV 第一单元:福特逃逸 运动型多用途汽车 第二单元:福特F-150 卡车 但它是这样显示的:

Cell 1: Ford Escape SUV Cell 2: Ford F-150 Truck Cell 1: Ford Escape Car Cell 2: Ford F-150 SUV 第一单元:福特逃逸 汽车 第二单元:福特F-150 运动型多用途汽车
本质上,它缩小了
titleArray
的范围,但没有缩小
detailArray
的范围,因此它显示
titleArray
中的对象1和2,但显示
detailArray
中的对象0和1。如果您对此感到困惑,请提出任何问题

因此,您最好只使用一个数组。有两种方法可以做到这一点:

1) 为数组的元素创建一个自定义类(派生自
NSObject
),可能名为
Vehicle
。您的vehicle类将具有“name”属性和“type”属性

NSMutableArray *vehicleArray = [[NSMutableArray alloc] init];

Vehicle *myVehicle = [[Vehicle alloc] init];
myVehicle.name = @"Ford Escape";
myVehicle.type = @"SUV";

[vehicleArray addObject:myVehicle];
2) 让数组中的元素的类型为
NSDictionary
。每个字典都有一个名称和类型的键值对

NSMutableArray *vehicleArray = [[NSMutableArray alloc] init];

NSDictionary *myVehicle = [[NSDictionary alloc] initWithObjectsAndKeys:@"Ford Escape", @"name", @"SUV", @"type", nil];

[vehicleArray addObject:myVehicle];

在代码中,您可能正在名为tableView:cellForRowAtIndexPath:的消息中创建UITableViewCell对象。我会为您的问题检查此代码。创建/检索UITableViewCell时,将填写标题和详细信息(在调试器中选中此项)。我注意到您下面的示例是创建一个缩减的项数组来响应您的搜索参数。似乎最有可能的是,您需要在缩减标题数组的同时缩减细节数组。您可能还需要在详细信息数组中进行搜索(取决于您希望应用程序的运行方式)。这可能会使您的搜索逻辑复杂一些

//Possible search logic
for (int iii = 0; iii < titleArray.count; iii++) {
    if (<titleArray matches search string>) {
        [titlesToDisplay addObject:[titleArray objectAtIndex:iii]];
        [detailsToDisplay addObject:[detailArray objectAtIndex:iii]];
        //Assuming that you have titles and details in corresponding slots.
    }
}
//可能的搜索逻辑
对于(int iii=0;iii

现在,当您为UITableViewCell设置标题和详细信息设置时,您应该计算titlesToDisplay中的条目数,并从titlesToDisplay和detailsToDisplay中检索条目。

从长远来看,一个数组肯定会有更多的好处。我真的建议使用这种方法。