【问题标题】:Need help in my code - I am getting incorrect data using NSArray在我的代码中需要帮助 - 我使用 NSArray 得到不正确的数据
【发布时间】:2020-01-09 10:30:29
【问题描述】:

我有一个循环遍历 NSArray 以提取数据,但我的数据正在自我复制。

我最初的 NSArray 'timeProfiles',包含 24 个 NSArray,每个 NSArray 包含 16 个对象。对于 timeProfiles 中的每个数组,我正在尝试将该数据添加到“时间刻度对象”。

我尝试将每个 timescaleInfo 对象添加到一个数组中,但仍然得到了耗尽的值。

我也尝试增加 timeProfiles 的第一个索引,例如 timeProfiles[z+1] 等,但到目前为止没有任何效果..

我们将不胜感激。

代码:

for (int z = 0; z < timeProfiles.count; z+= 12) {


    for (int i = 0; i < 12; i++) {//Time slices (12)


  tP = [timeProfiles objectAtIndex:z + i];
    //0SFTWTMS
    //00000SSH
    //Setting time profiles


        NSLog(@"timeprofile  %@", tP);


     timeScaleInfo0 = [[TimeScaleInfo alloc] initWithTimeScaleID:[timeProfiles[0][2] integerValue]  timeSliceID:[[tP objectAtIndex:15] integerValue] timeScaleStartTime:timeProfiles[0][3] timeScaleEndTime:timeProfiles[0][4] weekdayFlag:weekDayFlag0 clendarFlag:@"00000000"];
     timeScaleInfo1 = [[TimeScaleInfo alloc] initWithTimeScaleID:[timeProfiles[1][2] integerValue]  timeSliceID:[[tP objectAtIndex:15] integerValue] timeScaleStartTime:timeProfiles[1][3] timeScaleEndTime:timeProfiles[1][4] weekdayFlag:weekDayFlag1 clendarFlag:@"00000000"];
     timeScaleInfo2 = [[TimeScaleInfo alloc] initWithTimeScaleID:[timeProfiles[2][2] integerValue]  timeSliceID:[[tP objectAtIndex:15] integerValue] timeScaleStartTime:timeProfiles[2][3] timeScaleEndTime:timeProfiles[2][4] weekdayFlag:weekDayFlag2 clendarFlag:@"00000000"];
     timeScaleInfo3 = [[TimeScaleInfo alloc] initWithTimeScaleID:[timeProfiles[3][2] integerValue]  timeSliceID:[[tP objectAtIndex:15]integerValue] timeScaleStartTime:timeProfiles[3][3] timeScaleEndTime:timeProfiles[3][4] weekdayFlag:weekDayFlag3 clendarFlag:@"00000000"];
     timeScaleInfo4 = [[TimeScaleInfo alloc] initWithTimeScaleID:[timeProfiles[4][2] integerValue]  timeSliceID:[[tP objectAtIndex:15] integerValue] timeScaleStartTime:timeProfiles[4][3] timeScaleEndTime:timeProfiles[4][4] weekdayFlag:weekDayFlag4 clendarFlag:@"00000000"];
     timeScaleInfo5 = [[TimeScaleInfo alloc] initWithTimeScaleID:[timeProfiles[5][2] integerValue]  timeSliceID:[[tP objectAtIndex:15]integerValue] timeScaleStartTime:timeProfiles[5][3] timeScaleEndTime:timeProfiles[5][4] weekdayFlag:weekDayFlag5 clendarFlag:@"00000000"];
     timeScaleInfo6 = [[TimeScaleInfo alloc] initWithTimeScaleID:[timeProfiles[6][2] integerValue]  timeSliceID:[[tP objectAtIndex:15] integerValue] timeScaleStartTime:timeProfiles[6][3] timeScaleEndTime:timeProfiles[6][4] weekdayFlag:weekDayFlag6 clendarFlag:@"00000000"];
     timeScaleInfo7 = [[TimeScaleInfo alloc] initWithTimeScaleID:[timeProfiles[7][2] integerValue]  timeSliceID:[[tP objectAtIndex:15] integerValue] timeScaleStartTime:timeProfiles[7][3] timeScaleEndTime:timeProfiles[7][4] weekdayFlag:weekDayFlag7 clendarFlag:@"00000000"];
     timeScaleInfo8 = [[TimeScaleInfo alloc] initWithTimeScaleID:[timeProfiles[8][2] integerValue]  timeSliceID:[[tP objectAtIndex:15]integerValue] timeScaleStartTime:timeProfiles[8][3] timeScaleEndTime:timeProfiles[8][4] weekdayFlag:weekDayFlag8 clendarFlag:@"00000000"];
     timeScaleInfo9 = [[TimeScaleInfo alloc] initWithTimeScaleID:[timeProfiles[9][2] integerValue]  timeSliceID:[[tP objectAtIndex:15] integerValue] timeScaleStartTime:timeProfiles[9][3] timeScaleEndTime:timeProfiles[9][4] weekdayFlag:weekDayFlag9 clendarFlag:@"00000000"];
     timeScaleInfo10 = [[TimeScaleInfo alloc] initWithTimeScaleID:[timeProfiles[10][2] integerValue]  timeSliceID:[[tP objectAtIndex:15] integerValue] timeScaleStartTime:timeProfiles[10][3] timeScaleEndTime:timeProfiles[10][4] weekdayFlag:weekDayFlag10 clendarFlag:@"00000000"];
     timeScaleInfo11 = [[TimeScaleInfo alloc] initWithTimeScaleID:[timeProfiles[11][2] integerValue]  timeSliceID:[[tP objectAtIndex:15] integerValue] timeScaleStartTime:timeProfiles[11][3] timeScaleEndTime:timeProfiles[11][4] weekdayFlag:weekDayFlag11 clendarFlag:@"00000000"];
    }

    TimeSliceInfo *timesliceInfo = [[TimeSliceInfo alloc] initWithTimeSliceID:[[tP objectAtIndex:15] integerValue]  timeScaleInfoArray:@[timeScaleInfo0, timeScaleInfo1, timeScaleInfo2, timeScaleInfo3, timeScaleInfo4, timeScaleInfo5, timeScaleInfo6, timeScaleInfo7, timeScaleInfo8, timeScaleInfo9, timeScaleInfo10, timeScaleInfo11]];



    [timeSliceArray addObject:timesliceInfo];

    userKeyInfo.timeSliceInfoArray = timeSliceArray;

}

【问题讨论】:

  • 您应该澄清“复制自身”的含义。这段代码实际上有很多问题。用更具体的答案阐明您的要求可能会让您更好地了解某人可能希望如何为您提供所需的推动力。

标签: objective-c for-loop nsarray


【解决方案1】:

花了一段时间才弄清楚,但这是可行的解决方案。

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

    for (int z = 0; z < timeProfiles.count; z+=12) { //increments every 12 arrays then extracts data.

        NSMutableArray *timeScaleInfoArray = [[NSMutableArray alloc] init];
        NSArray *tP;
        for (int i = 0; i < 12; i++) {//Time slices (12)

            //00000SSH

            tP = [timeProfiles objectAtIndex:z + i];
            NSString *weekDayFlag = [NSString stringWithFormat:@"%@%@%@%@%@%@%@%@",@"0",tP[10],tP[9],tP[8],tP[7],tP[6],tP[5],tP[11]];
            NSString *calendarFlag = [NSString stringWithFormat:@"%@%@%@%@%@%@%@%@",@"0",@"0",@"0",@"0",@"0",tP[12], tP[13],tP[14]];

            TimeScaleInfo *timeScaleInfo = [[TimeScaleInfo alloc] initWithTimeScaleID:[[tP objectAtIndex:2] integerValue] timeSliceID:[[tP objectAtIndex:15] integerValue] timeScaleStartTime:tP[3] timeScaleEndTime:tP[4] weekdayFlag:weekDayFlag clendarFlag:calendarFlag];

            [timeScaleInfoArray addObject:timeScaleInfo];
        }

        TimeSliceInfo *timesliceInfo = [[TimeSliceInfo alloc] initWithTimeSliceID:[[tP objectAtIndex:15] integerValue] timeScaleInfoArray:timeScaleInfoArray];

        [timeSliceArray addObject:timesliceInfo];
    }

    userKeyInfo.timeSliceInfoArray = timeSliceArray;

【讨论】:

    【解决方案2】:

    这里 - for (int z = 0; z &lt; timeProfiles.count; z+= 12)

    z = z + 12 是你想要的吗?我觉得应该是z = z + 1

    如果我遗漏了什么,请纠正我。

    【讨论】:

    • 嗨。 +=12 是正确的,因为我们希望每次迭代都增加 12。
    猜你喜欢
    • 2018-02-07
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 2019-09-21
    • 2019-11-07
    相关资源
    最近更新 更多