2014-04-01 32 views
1

在更改(偶然)模擬器(從32位到64位平臺)時得到很多警告後,我擺脫了所有int聲明並更改爲NSinteger s。隱式轉換失去整數精度:warninig,代碼爲64位平臺

但是我對這段代碼另一個警告:

- (IBAction)nextText:(UIBarButtonItem *)sender { 

    NSInteger i=[self.indexPathArray indexOfObject:[self indexPathForActiveText]]; 
    //before it was int i=... 

    if (i<[self.indexPathArray count]-1) { 

     [self moveRows:++i]; 

    } 
} 
然而

上線[self moveRows:++i];我得到的警告「隱式轉換失去整數precission:...」一次。

我知道這可能是一個非常愚蠢的問題,但我不知道如何解決它。

在此先感謝!

+1

顯示'moveRows:'聲明或定義... – Mani

+0

有一個隱藏的錯誤條件'i <[self.indexPathArray count] - 1'(對於空的'indexPathArray')。將其更改爲'i + 1 <[self.indexPathArray count]'。 –

+0

好的電話,謝謝。我確信在我的實現中數組永遠不會是空的,但其中一個永遠不會太確定。謝謝。 – Marcal

回答

3

它應該在64位平臺上顯示警告。 NSInteger i=[self.indexPathArray indexOfObject:[self indexPathForActiveText]];因爲indexOfObject:返回NSUInteger.所以,你的代碼應該如下

NSUInteger i=[self.indexPathArray indexOfObject:[self indexPathForActiveText]]; 

而且還

-(void)moveRows:(NSUInteger)index; 

See this apple's doc

+0

非常感謝!在編程一段很長的停頓之後,我已經瞭解了整個事情。再次感謝! – Marcal

+0

You'r welcome @Marcal :) – Mani

相關問題