English 中文(简体)
国家安全局的不明行为 英文 反对:atIndex
原标题:Unexpected behavior from NSMutableArray insertObject:atIndex

i 尝试使用1至30个数字的阵列。

NSMutableArray *numberOfdaysInAMonth = [[NSMutableArray alloc] init ] ;

for ( i=0; i< 30; i++){
    [numberOfdaysInAMonth  addObject:[NSNumber numberWithInteger:i+1]];
    NSLog (@"Element_numberofDaysinAMonth %i = %@", i, [numberOfdaysInAMonth objectAtIndex: i]); 
}

我有35个部分,其价值为:

NSMutableArray *latestArrayForMonth = [[NSMutableArray alloc]init ];

for ( i=0; i<36; i++){        
    [latestArrayForMonth addObject:[NSNull null]];         
}

现在,我要将OfDaysInAMonth的数值从指数:1中插入:

for (i = 0; i < 30; i++){  
    [latestArrayForMonth insertObject:[numberOfdaysInAMonth objectAtIndex:i] atIndex:1];
    NSLog (@"Element_latestArrayForMonth %i = %@", i, [latestArrayForMonth objectAtIndex: i]);  
}

“康索尔”的输出是:

Element_latestArrayForMonth 0 = <null>
Element_latestArrayForMonth 1 = 2
Element_latestArrayForMonth 2 = 2
Element_latestArrayForMonth 3 = 2
Element_latestArrayForMonth 4 = 2
Element_latestArrayForMonth 5 = 2
.
.
.
Element_latestArrayForMonth 28 = 2
Element_latestArrayForMonth 29 = 2

Why am I getting all 2s on the output?

最佳回答

这是因为:

[latestArrayForMonth insertObject:[numberOfdaysInAMonth objectAtIndex:i] atIndex:1];

由于您重新插入项目<代码>atdex:1。 由于地圈中的单变量在不断增加,阵列中项目的数量也在增加,因此,按指数一分列的项目总是一个相同的项目。

还请检查在指数1中插入物体是你想要做的事——目标C是零指数化的语言,即阵列的第一个项目是指数0。

您可能希望删除<代码>上的最新条目/代码>阵列中的所有物体,并简单地使用<代码>addObject (或使用addObjectsFromArray,以便迅速增加所有项目。

Also might be worthy investigating alternative approaches to having an array full of empty values - I ve never seen a use case for this approach yet, better to have an empty array than an array full of empty values.

值得注意的另一点是,由于你只是重新储存原始的惯性分类值,你可能会发现NSIndexSet比NSArray(取决于所贴编码的适用,但值得调查)。

问题回答

采用<代码>sert 目标:......在Index:1上,你在指数1中插入1个月(没有内容因此而达到指数0),然后在2个月(实际为指数1)上加插字。 2. 结 论 在5个要素之后,你阵列将像这1,54,3,2个。 你应该做的是,仅仅通过从指数中分出1,就可以进入这个阵列,但如果你想从指数1开始,就首先增加一个NSNull。

[latestArrayForMonth addObject:[NSNull null]];

for (i = 0; i < 30; i++){

    [latestArrayForMonth addObject:[numberOfdaysInAMonth objectAtIndex:i]];

    NSLog (@"Element_latestArrayForMonth %d = %@", i + 1, [latestArrayForMonth objectAtIndex: i + 1]);  

}




相关问题
Code sign Error

I have created a new iPhone application.I have two mach machines. I have created the certificate for running application in iPhone in one mac. Can I use the other mac for running the application in ...

ABPersonViewController Usage for displaying contact

Created a View based Project and added a contact to the AddressBook using ABAddressBookRef,ABRecordRef now i wanted to display the added contact ABPersonViewController is the method but how to use in ...

将音频Clips从Peter改为服务器

我不禁要问,那里是否有任何实例表明从Peit向服务器发送音响。 I m不关心电话或SIP风格的解决办法,只是一个简单的袖珍流程......

• 如何将搜查线重新定位?

我正试图把图像放在搜索条左边。 但是,问题始于这里,搜索条线不能重新布署。

热门标签