Присоедините два NSMutableArrays и используйте с UISearchBar - PullRequest
0 голосов
/ 14 апреля 2011

У меня есть два NSMutableArrays;name и nameID В моем табличном представлении в качестве textLabel будет отображаться только имя.

Я хочу искать имена, используя UISearchBar.Например,

   name   --    nameID
    Stack         123
    Over          -1

nameID - это главное, что нужно использовать.

Итак, возможно ли связать два NSMutableArrays, чтобы каждый раз, когда пользователи выбирали Stack, он отображал 123?

Спасибо

Ответы [ 3 ]

0 голосов
/ 14 апреля 2011

Один из подходов может быть таким: вместо сохранения данных по отдельности, поскольку они несут взаимосвязь, вы можете инкапсулировать их в класс, скажем Record, который имеет два поля name и id.Теперь удерживайте массив этого объекта (скажем, 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;
}

Пожалуйста, исправьте приведенный выше кодсогласно вашей потребностиЗдесь я рассматриваю, что вы хотите найти nameId для record, имя которого начинается с searchText (как вы видите, я использовал searchRange.location == 0`).

В будущем предположим, что вам нужно хранить больше деталей дляЗапишите, чем будет проще.

0 голосов
/ 15 апреля 2011

Один простой способ, который я нашел, состоит в том, чтобы соединить строки (name #nameID) и после этого разделиться, чтобы вернуть nameID.

0 голосов
/ 14 апреля 2011

Как насчет использования одного NSMutableDictionary с именами в качестве ключей и идентификаторов в качестве значений?

Затем в вашей таблице массив данных можно найти с помощью [myNameDict allKeys].

Или вы можете сделать идентификаторы ключами и именами значениями, в этом случае все имена будут доступны в виде массива путем вызова [myNameDict allValues].

. Помните, что allKeys иallValues возвращает массивы, порядок которых не гарантирован.

Таким образом, вы можете, в качестве третьего варианта, поддерживать массив словарей, где каждый словарь имеет два ключа, имя и идентификатор, значениями которых являются имя иЯ бы.Затем вы соединили каждое имя и идентификатор в один объект (словарь), и вы можете быть уверены в порядке вашего массива пар имя / идентификатор.

...