NSMutableArray insertObject atIndex问题

时间:2011-05-31 03:37:55

标签: objective-c ios4 nsmutablearray

这个网站上有很多关于添加到NSMutableArray的例子,我看了很多,但我仍然不理解(很可能)或遗漏了一些基本的东西。

我试图通过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);

  

日志条目看起来不错:

2,64,0

3,128,0

等每个按钮都要添加到屏幕上。

在调试期间 - tmpXpos和tmpYpos在self下列为“0 Objects”。

我如此检索信息:

  
    

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而改变,但不适用于任何其他位置。

再次感谢!

尼尔

2 个答案:

答案 0 :(得分:0)

我认为您的问题是,当NSUInteger实际上是无符号长整数时,您使用方法numberWithInteger创建NSNumbers。所以试试

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

答案 1 :(得分:0)

森林的树木回答。我想用数量填充数组,但是,数组期望数量是数字序列。我的数据没有任何“差距”,但也没有顺序; I.E.,1,2,3,6,7,12等因此,正如用户397313帮助我看到的那样,NSDictionary就是采用这种数据的方式。