2012-08-27 57 views
0

好的。我一直在嘗試組織這個nsmutable數組,所以我的程序可以按照我想要的方式使用它。努力用NSNumber數據類型編輯NSMutableArray

我從一個標準的NSMutable數組開始,然後使用addobject:方法填充它,然後用更多的NSMutableArrays(在數組中使用數組)填充它。因此,我需要調用ObjectAtIndex:方法,並且還需要replaceObjectAtIndex:withObject:方法。另外,因爲你只能使用ID類型的廣告對象到NSMutableArrays(至少我認爲),所以我不得不將所有的雙變量轉換爲NSNumbers,然後返回到數學的雙精度值,然後返回到NSNumbers再次存儲...效率很低。

但主要問題是(以前的東西只是東西,我很好奇),此代碼:

NSMutableArray * array = [tmp objectAtIndex x]; 
[tmp replaceObjectAtIndex:x withObject: [array replaceObjectAtIndex:2 withObject: result]]; 

Xcode中說,問題是在第二行,我剛添加的firrst了一下在上下文中。結果是一個NSNumber,tmp也是一個NSMutableArray。 Xcode說這個錯誤是「將'Void'發送給不兼容類型'id'」的參數。

我真的很感激任何幫助:)。謝謝!

+0

什麼是結果? –

+1

當你得到奇怪的錯誤信息時,總是一個好主意,把複雜的表達式分解成單獨的行。這可以讓你確定哪個特定的結構會引發錯誤。 –

+0

謝謝熱舔。這似乎是傑克勞倫斯在我選擇的答案中所說的:)。正如你所猜測的,我是比較新的,昨晚凌晨3點這樣做:/。我發佈了這個,然後昨晚墜毀:)。 –

回答

3

讓我們分解線[tmp replaceObjectAtIndex:x withObject: [array replaceObjectAtIndex:2 withObject: result]];

當你看到這樣的問題,並且你有一堆嵌套的方法時,從最深的方法調用開始並移出,檢查文檔以查看每個方法返回的內容。在這種情況下,答案很簡單,但它總是好的做法:

-[NSMutableArrray replaceObjectAtIndex:withObject:]回報void,因此:

[tmp replaceObjectAtIndex:x withObject: void],因此通過voidreplaceObjectAtIndex:withObject:第二個參數,它的Xcode應該理所當然地抱怨。

+1

謝謝你!!!!我在這裏堅持了一個小時,帶着大量隨機的無關緊要的東西:)。 Soooo簡單一旦你看到它:P。 –

1

replaceObjectAtIndex的返回類型是void,所以這就是爲什麼你會得到這個錯誤。你的意圖是添加數組,但你只是添加整個表達式的結果,這是無效的。您需要將replaceObjectAtIndex方法作爲單獨的行,然後使用數組作爲對象參數。

+0

感謝您的評論! :)這確實是問題:)。 –