Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSMutableArray插入对象索引问题_Objective C_Ios4_Nsmutablearray - Fatal编程技术网

Objective c NSMutableArray插入对象索引问题

Objective c NSMutableArray插入对象索引问题,objective-c,ios4,nsmutablearray,Objective C,Ios4,Nsmutablearray,在这个网站上有很多关于添加到NSMutableArray的例子,我已经看过了很多,但是我仍然不理解高度可能的情况,或者我缺少一些基本的东西 我试图通过for循环添加到NSMutableArray。我想使用按钮标签作为键/索引来跟踪按钮的x、y坐标位置,以便在用户单击按钮时可以对其进行更改。这一切都没有IB 我的建议如下: self.tmpXpos=[[NSMutableArray alloc]init]; self.tmpYpos=[[NSMutableArray alloc]init] [se

在这个网站上有很多关于添加到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填充数组的内容后,我添加了这些内容

在循环中:

nsu整数btag=button.tag//根据“帮助”进行集成

NSLog@%d、%@、%@、btag、xNumber、yNumber

日志条目看起来正常:

2,64,0

3128,0

等,用于添加到屏幕上的每个按钮

调试期间-tmpXpos和tmpYpos在self下作为0对象列出

因此,我检索信息:

NSUTEGER tmpSt=[self.sTags integerValue]

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

NSNumber*tmpY=[self.tmpYpos objectAtIndex:tmpSt]

inttmppositionx=[tmpX intValue]

int-tmpositiony=[tmpY-intValue]

NSLog@%d,%d,tmpositionx,tmpositiony

NSLog产生0,0

我非常感谢你们提供的任何指导或问题,因为这个网站的“健康检查”在过去拯救了我

到目前为止,我忽略了内存泄漏,但它们在我的脑海里。不用担心。 具有讽刺意味的是,我还有几个其他数组工作得很好,但例外是它们不是通过循环填充的

最后,代码可以正常工作,因为位置0,0处的按钮确实会根据设计LOL进行更改,但不适用于任何其他位置

再次感谢


Neil

我认为您的问题在于,您正在使用numberWithInteger方法创建NSNumbers,而NSUInteger实际上是一个无符号长整数。所以试试看


xNumber=[NSNumber numberWithUnsignedLong:[self xpos]]

森林之树的答案。我想用一个数量填充一个数组,但是,该数组希望该数量是数字序列。我的数据没有任何“缺口”,但也没有顺序;例如,1、2、3、6、7、12等。因此,正如用户397313帮助我看到的,NSDictionary是处理此类数据的方法。

好主意,但它不起作用。object self.xpos的内容也是一个整数,这让我想到尝试“numberWithInteger”,但是“numberWithUnsignedLong”没有改变数组内容:0个对象通过self在debug中运行。这给了我合适的条件,所以我想我要从日志文件中对坐标进行punt和硬编码!哦,等等,我刚才看了你检索信息的方式,你把一个整数转换成一个无符号的长整数。NSUTEGER tmpSt=[self.sTags integerValue];另外,当你说你的init方法时,你的意思是代码在你的类中是实际的init方法,因为如果是这样的话,除非你在别处分配该类的实例,否则该方法将不会被调用。@user397313-完全正确,我在-loadView下做了这件事。我的其他数组都是用这个方法实例化的,工作得很好。我只需要找到一种不使用循环来填充数组的方法。。有什么想法吗?
>>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];