Вопрос

У меня есть два массива в Objective C, и мне нужно найти какой-то индекс, чтобы я мог вставить его в одно и то же место.Например, предположим, что у меня есть «массив имен» и «массив возраста».Как мне узнать, какой индекс «Чарли» находится в «массиве имен», чтобы я знал, куда вставить его возраст в массив «возраст»?

Спасибо

Это было полезно?

Решение

-[NSArray indexOfObject:] казалось бы, логичный выбор.

Другие советы

В Cocoa параллельные массивы — это путь к гибели и разрушению.Вы не сможете эффективно использовать их с привязками, поэтому вместо этого вам придется писать много связующего кода, как если бы привязок не существовало.Более того, вы уничтожаете любую будущую поддержку AppleScript/Scripting Bridge, которую вы, возможно, захотите иметь, еще до того, как начнете ее реализовывать.

Правильный способ — создать класс модели с name и age свойства и иметь один массив экземпляров этого класса.Затем, чтобы найти элемент по имени или возрасту, используйте NSPredicate для фильтрации массива и indexOfObjectIdenticalTo: чтобы найти индекс каждого элемента отфильтрованного массива в основном массиве.

Разница между indexOfObject: и indexOfObjectIdenticalTo: в том, что бывший отправит isEqual: сообщения, чтобы определить, является ли каждый объект тем, который он ищет, тогда как последний будет искать только конкретный объект, который вы передали.Таким образом, вы можете использовать indexOfObject: с объектом, которого нет в массиве, но равен ему, чтобы найти равный объект в массиве.

Возможно, вам также захочется использовать NSDictionary, если вы выполняете поиск на основе строк.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top