Ios 遍历NSArray并以12个为一组存储项

Ios 遍历NSArray并以12个为一组存储项,ios,objective-c,parsing,nsarray,Ios,Objective C,Parsing,Nsarray,我肯定已经尽力在这件事上尽职尽责了,但还是没有做到。我有一个已解析的对象数组,我希望遍历这些对象并存储它们。假设数组是144个对象(只是一个示例),我想将其以12个对象为一组存储,以显示在tableview单元格中。实际上,在数组中的12个对象中,我很可能只在单元格中显示3-4个,但在细节视图中显示所有这些对象 为了帮助解释我的意思(如果在这一点上没有意义的话,很抱歉),这里是我得到的一些获取数据的代码 NSMutableArray *objectsArray = [[NSMutableArra

我肯定已经尽力在这件事上尽职尽责了,但还是没有做到。我有一个已解析的对象数组,我希望遍历这些对象并存储它们。假设数组是144个对象(只是一个示例),我想将其以12个对象为一组存储,以显示在tableview单元格中。实际上,在数组中的12个对象中,我很可能只在单元格中显示3-4个,但在细节视图中显示所有这些对象

为了帮助解释我的意思(如果在这一点上没有意义的话,很抱歉),这里是我得到的一些获取数据的代码

NSMutableArray *objectsArray = [[NSMutableArray alloc] initWithCapacity:0];

for (TFHppleElement *element in objectsNode) {
    PHSingleEvent *singleEvent = [[PHSingleEvent alloc]init];
    [objectsArray addObject:singleEvent];

    singleEvent.title = [[element firstChild] content];
}
这将拉下整个对象数组(一个未知的数字,但肯定是12的倍数)。如何将12个对象一次存储到单个事件中

我可以将信息记录到

PHSingleEvent *firstObject = [objectsArray objectAtIndex:0] // this one is null
PHSingleEvent *eventStartTime = [objectsArray objectAtIndex:1];
PHSingleEvent *eventEndTime = [objectsArray objectAtIndex:2];
...
PHSingleEvent *lastObject = [objectsArray objectAtIndex:11];

NSLog(@"single object of event: %@", eventStartTime.startTime);
NSLog(@"single object of event: %@", eventEndTime.endTime);

etc...
但是数组一直超过12。我希望遍历每12个对象并存储这些值,最好是作为字符串显示在单元格和详细视图中

有什么想法吗

提前非常感谢,如果我不清楚,我会在这里回答任何问题


C.

使用for循环怎么样?假设每个事件对象有12个子对象(即索引0-11),则可以通过使用mod函数来实现存储。例如:

NSMutableArray *eventArray = [[NSMutableArray alloc] init];
for(int i=0; i<objectArray.count/12;i++){
    int offset = 12*i;
    NSMutableArray *event = [objectsArray subarrayWithRange:NSMakeRange(offset, 12)];
    [eventArray addObject:event];
}
NSMutableArray *eventArray = [[NSMutableArray alloc] init];
    for(int i=0; i<objectArray.count/12;i++){
        int offset = 12*i;
        NSDictionary *tempDict = [[NSDictionary alloc] initWithObjectsAndKeys: [objectsArray objectAtIndex: offset], @"eventStartTime", [objectsArray objectAtIndex: offset+1], @"eventEndTime", ..., [objectsArray objectAtIndex: offset+11, @"lastObject",nil]; 
        [eventArray addObject:tempDict];
    }

希望这有帮助

此方法将根据您指定的组大小返回一个较小数组的数组

- (NSMutableArray*)makeGroupsOf:(int)groupSize fromArray:(NSArray*)array
{
    if (!array || array.count == 0 || groupSize == 0)
    {
        return nil;
    }

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

    for (int i = 0; i < array.count; )
    {
        NSMutableArray *smallGroup = [[NSMutableArray alloc] initWithCapacity:groupSize];
        for (int j = 0; j < groupSize && i < array.count; j++)
        {
            [smallGroup addObject:[array objectAtIndex:i]];
            i++;
        }
        [bigGroup addObject:smallGroup];
    }
    return bigGroup;
}
-(NSMutableArray*)makeGroupsOf:(int)groupSize fromArray:(NSArray*)数组
{
如果(!array | | array.count==0 | | groupSize==0)
{
返回零;
}
NSMutableArray*bigGroup=[[NSMutableArray alloc]init];
对于(int i=0;i
我还没有测试过它或者其他什么。在使用较小的数组创建大数组后,只需使用子数组中任意数量的对象填充每个单元格即可


注意:当数组为空、null或组大小为0时,您可能需要以不同方式处理这些情况。

如果我错了,请更正我的错误。假设一个数组中有144个对象,那么您希望将该数组拆分为12个大小为12的小数组?12个对象的数组索引将从0变为11。因此,您的lastObject应该是[objectsArray objectAtIndex:11],如果您在特定索引中存储特定类型的信息,那么使用NSDictionary会更好。这样,您就不必跟踪索引,只需输入键即可used@HimanshuJoshi-不完全是。我希望能够使每组12个属性,这样我就可以用这些项目填充单个事件单元格。下一个单元格将包含接下来的12个项目,以此类推。例如。。objectAtIndex:1将是“2014年6月4日”,objectAtIndex:2=“2014年7月4日”(开始和结束日期),然后是一组其他数据,最后是objectAtIndex:13,这也是一个开始日期。所以对象1、13、25、37等都是“开始日期”,每次我到达列表中的开始日期时,我想确保它是一个单独的事件并加载到下一个单元格中。@akashg你说得对。。。只是一个深夜的打字错误。我已经改正了,谢谢!这看起来确实像是我试图摸索出的数据。我现在正在做,会让你知道它是否有效。再次感谢,这对我来说是完美的。我现在使用一组字典来填充表和详细视图。谢谢你的帮助!
- (NSMutableArray*)makeGroupsOf:(int)groupSize fromArray:(NSArray*)array
{
    if (!array || array.count == 0 || groupSize == 0)
    {
        return nil;
    }

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

    for (int i = 0; i < array.count; )
    {
        NSMutableArray *smallGroup = [[NSMutableArray alloc] initWithCapacity:groupSize];
        for (int j = 0; j < groupSize && i < array.count; j++)
        {
            [smallGroup addObject:[array objectAtIndex:i]];
            i++;
        }
        [bigGroup addObject:smallGroup];
    }
    return bigGroup;
}