2011-05-31 64 views
0

在這個網站上有很多關於添加到NSMutableArray的例子,我已經看過很多,但我仍然不明白(極有可能)或缺少一些基本的東西。NSMutableArray insertObject atIndex問題

我想通過for循環添加到NSMutableArray。我想使用按鈕標籤作爲鍵/索引來跟蹤按鈕x,y座標位置,以便用戶點擊時可以更改按鈕。這完全沒有IB。

我的初始化是如下:

self.tmpXpos = [[NSMutableArray裏的alloc] INIT];
self.tmpYpos = [[NSMutableArray alloc] init];

[self.tmpXpos insertObject:[NSNull null] atIndex:0];

[self.tmpYpos insertObject:[NSNull null] atIndex:0];
**我在閱讀'創建'數組並填充null後添加了這些內容。

在循環:

NSUInteger BTAG = button.tag; // NSUInterger按幫助

>>NSNumber *xNumber = [NSNumber numberWithInteger:[self xpos]]; // NSNumber as an Object wrapper 
>>NSNumber *yNumber = [NSNumber numberWithInteger:[self ypos]]; 


>>[self.tmpXpos insertObject:xNumber atIndex:btag]; 
>>[self.tmpYpos insertObject:yNumber atIndex:btag]; 

的NSLog(@ 「%d,%@,%@」,BTAG,xNumber,yNumber);

日誌條目看起來OK:

2,64,0

3,128,0

等爲每個按鈕添加到屏幕上。

在調試過程中 - tmpXpos和tmpYpos在自身下列爲「0對象」。

我正是如此檢索信息:

NSUInteger tmpSt = [self.sTags integerValue];

NSNumber * tmpX = [self.tmpXpos objectAtIndex:tmpSt];

NSNumber * tmpY = [self。tmpYpos objectAtIndex:tmpSt];

int tmpPositionX = [tmpX intValue];

int tmpPositionY = [tmpY intValue]; NSLog(@「%d,%d」,tmpPositionX,tmpPositionY);

的NSLog產生0,0

我不明白你們這些人可能是這個網站的「健全性檢查」過去救了我的燻肉任何指導或問題。

到目前爲止,我忽略了內存泄漏,但他們在我心中。不用擔心。具有諷刺意味的是,我有幾個其他數組可以正常工作,但例外情況是它們不是通過循環填充的。

最後,代碼工作正常,因爲位置0,0處的按鈕確實按照設計LOL更改,但不適用於任何其他位置。

再次感謝!

尼爾

回答

0

我覺得你的問題是,你正在創建與方法numberWithInteger中,NSNumbers當NSUInteger實際上是一個unsigned long。所以試試

xNumber = [NSNumber numberWithUnsignedLong:[self xpos]];

+0

好主意,但它沒有奏效。對象self.xpos的內容也僅僅是一個整數,它給了我想要嘗試'numberWithInteger'的想法,但'numberWithUnsignedLong'並沒有改變數組內容:0通過調試中的self。 – Neil 2011-05-31 08:43:56

+0

這是給我適合,所以我想我打算踢和硬編碼從日誌文件的座標! – Neil 2011-05-31 12:45:51

+0

哦,等等,我只是看着你檢索信息的方式,然後你把一個整數轉換成一個無符號長整數。 NSUInteger tmpSt = [self.sTags integerValue]; – 2011-05-31 14:04:44

0

森林的樹木答案。我想用一個數量來填充一個數組,但是,數組期望這個數量是按照數字順序的。我的數據沒有任何「空白」,但也沒有按順序; I.E.,1,2,3,6,7,12等。所以,正如用戶397313幫助我看到的,NSDictionary是用這種數據去處理的方式。