Ответ 1
-[NSArray indexOfObject:]
представляется логичным выбором.
У меня есть два массива в Objective C, и мне нужно найти какой-то индекс, чтобы я мог вставить его в одно и то же место. Например, скажем, у меня есть "массив имен" и "возрастный массив". Как узнать, какой индекс "charlie" находится в "массиве имен", поэтому я знаю, где вставить его возраст в массив "age"?
Спасибо
-[NSArray indexOfObject:]
представляется логичным выбором.
В Cocoa параллельные массивы - это путь к обречению и разрушению. Вы не можете эффективно использовать их с помощью Bindings, поэтому вам придется писать много кода клея вместо этого, как будто Bindings не существует. Более того, вы уничтожаете любую будущую поддержку AppleScript/Scripting Bridge, которую вы можете намереваться получить, прежде чем даже начать ее реализовывать.
Правильный способ - создать класс модели с свойствами name
и age
и иметь один массив экземпляров этого класса. Затем, чтобы найти элемент по имени или возрасту, используйте NSPredicate
для фильтрации массива и indexOfObjectIdenticalTo:
, чтобы найти индекс каждого элемента из фильтрованного массива в основном массиве.
Разница между indexOfObject:
и indexOfObjectIdenticalTo:
заключается в том, что первая отправит сообщения isEqual:
, чтобы определить, является ли каждый объект тем, который он ищет, тогда как последний будет искать только определенный объект, который вы передали., вы можете использовать indexOfObject:
с объектом, который не находится в массиве, но равен тому, который есть, чтобы найти равный объект в массиве.
Вы можете просто использовать NSDictionary, если вы выполняете поиск по строкам.