Цикл NSArray для сбора конкретных объектов - PullRequest
1 голос
/ 01 апреля 2011

Я не могу собраться с мыслями в данный момент, и у меня возникают проблемы с поиском решения следующего:

У меня есть массив 5 NSObjects, Object-X.Каждый объект имеет два объекта, Object-Y.Каждый из этих двух объектов имеет 50 объектов, Object-Z, внутри них.

Примерно так.

Object-X 0:
    Object-Y 0:
        Object-Z: 0
        Object-Z: 1
        Object-Z: 2
        ...
    Object-Y 1:
        Object-Z: 0
        Object-Z: 1
        Object-Z: 2
        ...
Object-X 1:
    Object-Y 0:
        Object-Z: 0
        Object-Z: 1
        Object-Z: 2
        ...
    Object-Y 1:
        Object-Z: 0
        Object-Z: 1
        Object-Z: 2
        ...
Object-X 2:
    Object-Y 0:
        Object-Z: 0
        Object-Z: 1
        Object-Z: 2
        ...
    Object-Y 1:
        Object-Z: 0
        Object-Z: 1
        Object-Z: 2
        ...
 ...

Каждый из пятидесяти объектов (Object-Z) имеет CLLocation.Сначала я пробегаю все 500 объектов и вычисляю расстояние от текущего местоположения пользователя и объектов.

Затем я хотел бы сделать (желательно одновременно, если это возможно), чтобы взять ближайший объект.Z из каждого Object-Y в каждом Object-X и вставьте его в массив, так что я получаю 10 объектов.

Ответы [ 2 ]

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

Не совсем понятно, где хранится расстояние, но если оно находится в ObjectZ, то вы можете сделать что-то вроде [objectXs valueForKeyPath:@"objectYs.objectZs.@min.distance"].

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

Вместо вычисления расстояния и , затем находим 10 ближайших объектов, возможно

  1. отправка, скажем, 5 блоков / потоков (с использованием GCD ... или общего многопоточного подхода), каждый из которых
  2. рассчитать 100 расстояний (для Object-Y[0] и Object-Y[1] некоторых Object-X[i]), а
  3. отслеживание объектов с минимальным расстоянием для Object-Y[0] и Object-Y[1]

Когда блоки / потоки заканчиваются, они могут добавлять объекты max в массив.

...