2015-09-09 58 views
-1

是否有任何方法用Objective-C減去兩個或更多NSUInteger值?如何減去兩個NSUInteger變量?

這是我的代碼

__block NSUInteger *removedElementsCount = 0; 
__block BOOL lastIsSuperElement = NO; 
// Get the elements not collapsed 
[_elements enumerateObjectsUsingBlock:^(id __nonnull obj, NSUInteger idx, BOOL * __nonnull stop) { 
    if (_isHidingSubElementsBlock(obj)){ 
     //_collapseSubCellsAtIndexPathBlock(idx+_elementsOffset); 
     [elementToRemove addObject:(Task *)obj]; 
     lastIsSuperElement = YES; 
     [indexPathToRemove addObject:[NSIndexPath indexPathForRow:(idx-removedElementsCount) inSection:0]]; 
     removedElementsCount = 0; 
    } else if (lastIsSuperElement){ 
     removedElementsCount++; 
     lastIsSuperElement = NO; 
    } 
}]; 

當我嘗試創建一個新的NSIndexPath與IDX-removedElementsCount,我得到以下錯誤:

HTReorderTableCells.m:231:75: Invalid operands to binary expression ('NSUInteger' (aka 'unsigned int') and 'NSUInteger *' (aka 'unsigned int *')) 

我一直在尋求一個解決方案,但我避風港沒有發現任何東西。

+1

你的意思是減號b嗎? – WangYudong

+0

是的,但與NSUInteger – EnriMR

+1

是的,有一種方法。你曾經嘗試失敗過?請顯示一些代碼。 –

回答

5

使用NSInteger作爲您的解決方案。

NSUInteger value1 = 5; 
NSUInteger value2 = 3; 
NSInteger subs = value1 - value2; 

在代碼中修復的removedElementsCount聲明(除去*)

+2

爲什麼'subs'是'NSInteger'而不是'NSUInteger'?解決方案不是使用'NSInteger'。解決方案是修復'removedElementsCount'的聲明。 – rmaddy

+1

這是NSInteger,因爲(value1 - value2)可能是負數。在他的問題中,「如何減去兩個NSUInteger變量?」所以這是答案。無論如何,我編輯了我的答案。 –

-2

removedElementsCount不是NSUInteger,這是一個NSUInteger*(指針爲整數)。

嘗試更改表達式以在減法之前解引用指針。

idx - (*removedElementsCount) 
+1

它會導致'BAD_ACCESS'。因爲'removedElementsCount'中有'NULL'。 –

+1

不,正確的解決方案是使'removedElementsCount'成爲'NSUInteger'而不是'NSUInteger *'。 – rmaddy