附加两个NSMutableArrays并与UISearchBar一起使用

时间:2011-04-14 15:09:48

标签: iphone objective-c ios nsmutablearray uisearchbar

我有两个NSMutableArrays; name和nameID 在我的tableview中,只有名称将显示为textLabel。

我想使用UISearchBar搜索名称。例如;

   name   --    nameID
    Stack         123
    Over          -1

nameID是需要使用的主要内容。

那么,是否可以链接两个NSMutableArrays,以便每当用户选择Stack时,它会显示123?

由于

3 个答案:

答案 0 :(得分:0)

如何使用一个NSMutableDictionary将名称作为键,将ID作为值使用?

然后,在您的表中,可以使用[myNameDict allKeys]找到数据数组。

或者,您可以将id作为键和名称的值,在这种情况下,通过调用[myNameDict allValues]可以将所有名称作为数组访问。

请记住,allKeysallValues会返回无法保证顺序的数组。

因此,作为第三种选择,您可以维护一个字典数组,其中每个字典都有两个键,name和id,其值是name和id。然后,您将每个名称和id配对到一个对象(字典)中,您可以确定您的名称/ ID对数组的顺序。

答案 1 :(得分:0)

一种方法可能是这样的,而不是单独维护数据,因为它们具有关系,您可以将它们封装在一个类Record中,其中包含两个字段nameid。现在保持这个对象的数组(比如recordList)。

我们可以按以下方式搜索给定Record的任何searchText

-(Record *) searchRecordWithName:(NSString *)searchText
{
Record *tempRecord;
  for( tempRecord in recordList)
  {
    NSRange searchRange = [tempRecord.name rangeOfString:searchText options:NSCaseInsensitiveSearch];
     if( searchRange.length>0 && searchRange.location==0)
      {
         break;
      }
  }
return tempRecord;
}

请根据您的需要更正上述代码。在这里,我想你想找到名称以searchText开头的record的nameId(如你所见,我使用searchRange.location == 0`)。

将来假设您需要为记录保存更多细节,而不是更容易。

答案 2 :(得分:0)

我找到的一个简单方法是加入字符串(名称为#nameID),然后分开以获取nameID。