我绝对尝试在此方面进行尽职调查,但不断提高。我有一系列我已经解析的对象,我想迭代这些对象并存储它们。假设数组是144个对象(只是一个示例),我想将其存储在12个组中以显示在表观视频单元格中。实际上,在数组中的这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];
}
所以现在EventArray有N数组,每个阵列,每个阵列中的每个阵列(其中N = TotalObjects/12)
编辑:一个更好的主意是使用nsdictionary。例如:
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];
}
然后,您可以使用类似的语句访问上述每个对象,如下所示:
PHSingleEvent *eventStartTime = [[eventArray objectAtIndex: index] objectForKey: @"eventStartTime"];
希望这有帮助
此方法将根据您指定的组大小返回较小数组的数组。
- (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;
}
我尚未测试过它。在带有较小数组的大数组之后,这只是一个从子阵列中填充任何所需数量的对象的问题。
注意:当数组为空,null或组大小为0时,您可能需要处理案例。