2015-07-20 6 views
2

У меня есть массив основных объектов данных, называемых образцами, каждый образец имеет глубину и глубину. Я загружаю каждый образец в таблицуView, чтобы показать depthFrom и Too. Мне нужно проверить промежутки между значениями, и если есть, вставьте новый образец.Сравнение чисел в массиве

Образцы в таблице может выглядеть, как показано ниже с depthFrom и depthToo,

enter image description here

Этот вопрос, поскольку существует разрыв между числами от 100 до 210 новых образцов должны быть добавлены в таблицу , используя зазор 50 как можно больше, чтобы он выглядел так, как с автогенераторами.

enter image description here

Что им не уверены в том, как сравнивать значения, я предпочел бы сделать это, как вид нагрузки, прежде чем cellForRowAtIndexPath называется так я не должен был бы перезагрузить таблицу снова. Я думал о том, чтобы перебирать каждое значение и сравнивать их, но там все в одном массиве, поэтому я не уверен, как это сделать. У меня есть все данные, отображающие правильно в моем приложении, просто пробелы, которые мне нужно учитывать, и если я смогу найти способ сравнить значения в массиве, тогда я могу управлять добавлением новых объектов, мне просто нужно указывать в правильном как это новое для меня.

Если есть что-либо о моем вопросе, который вводит в заблуждение, то просто добавьте комментарий, и я обновлю его, спасибо за любую помощь.

+0

Похож на цикл for, сохраняя отслеживание последней 'depthTo' и сравнивая с текущей' depthFrom'. Можете ли вы опубликовать, как вы уже пытались это решить? – thelaws

ответ

2

Чтобы устранить пробелы, вы должны отслеживать последние depthTo и проверять, существует ли промежуток между ним и текущим образцом. Если есть, вставьте образцы с интервалом 50 *, пока мы не достигнем нашего текущего образца.

Вот псевдокод решение:

samples = NSMutableArray 

int lastDepthTo = 0; 

for (i = 0; i < [samples count]; i++) { 
    s = samples[i] 

    // add missing samples (upto current s.depthFrom) 
    while (s.depthFrom > lastDepthTo) { 

     genDepthTo = MIN(d.depthFrom, lastDepthTo+50) 
     generated = new sample(depthFrom: lastDepthTo, depthTo: genDepthTo) 
     [samples insert:generated atIndex:i] 

     i++ // increment i to skip inserted sample 
     lastDepthTo = genDepthTo 
    } 

    lastDepthTo = s.depthTo 
} 

Примечание: это не проверялось, может быть выключен на 1 для индексации I.

+0

Это было именно то, что мне нужно, спасибо. –

Смежные вопросы