2015-07-20 55 views
2

我有一个称为样本的核心数据对象数组,每个样本都有一个depthFrom和depthToo。我将每个样本加载到tableView中以显示depthFrom和Too。我需要检查值之间的差距,如果有,插入一个新的样本。比较数组中的数字

下表中的样品可能看起来像depthFrom和depthToo下面,

enter image description here

的问题,因为有从100到210的新样本数之间的差距应该被添加到表。尽可能使用50的间隔,以便自动生成的样本看起来像这样。

enter image description here

什么IM不确定的是如何将值进行比较,我宁愿做它的视图加载之前的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我的索引。

+0

这正是我需要的,谢谢。 –