这个网站上有很多关于添加到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而改变,但不适用于任何其他位置。
再次感谢!
尼尔
答案 0 :(得分:0)
我认为您的问题是,当NSUInteger实际上是无符号长整数时,您使用方法numberWithInteger创建NSNumbers。所以试试
xNumber = [NSNumber numberWithUnsignedLong:[self xpos]];
答案 1 :(得分:0)
森林的树木回答。我想用数量填充数组,但是,数组期望数量是数字序列。我的数据没有任何“差距”,但也没有顺序; I.E.,1,2,3,6,7,12等因此,正如用户397313帮助我看到的那样,NSDictionary就是采用这种数据的方式。