2015-07-20 52 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

這正是我需要的,謝謝。 –