簡體   English   中英

如何在IOS中從UITableView搜索多個NSArray

[英]How to Search multiple NSArray from UITableView in IOS

我想要的是能夠搜索UITableView ,並將其他數組縮小到單元格的textlabel數組的結果。 這可能對任何人都沒有意義。 這是一個例子。

一個名為titleArray的數組,用於填充單元格的textLabel:

"Toyota Yaris"
"Ford Escape"
"Ford F-150"

另一個名為detailArray數組填充單元格中textLabel下面的詳細文本標簽:

"Car"
"SUV"
"Truck"

當我搜索“福特”時,我希望UITableView顯示如下的單元格:

Cell 1: Ford Escape
        SUV

Cell 2: Ford F-150
        Truck

但它顯示如下:

Cell 1: Ford Escape
        Car

Cell 2: Ford F-150
        SUV

從本質上講,它縮小了titleArray但沒有縮小detailArray因此它是titleArray顯示對象1和2,而detailArray 0和1。 如果這讓您感到困惑,請提出任何問題!

為此,只有一個陣列你會好得多。 有兩種方法可以做到這一點:

1)為數組的元素創建一個自定義類(派生自NSObject ),可能名為Vehicle 您的車輛類將具有“名稱”屬性和“類型”屬性。

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.
    }
}

現在,當您為UITableViewCell設置標題和詳細設置時,您應該計算titlesToDisplay中的條目,並從titlesToDisplay和detailsToDisplay中檢索條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM