将对象添加到数组

时间:2012-08-29 21:49:46

标签: iphone objective-c

我正在尝试将对象添加到数组中。我要特别做的是,计算我可以在页面上放置多少项,将这些项添加到我的itemsOnAPageArray,将其添加到我的pagesArray,然后再使用此信息。所以我的代码是:

NSMutableArray *pagesArray = [[NSMutableArray alloc] init];
NSMutableArray *itemsOnAPage = [[NSMutableArray alloc] init];

for (NSUInteger i = 0; i < [self.textObjects count]; i++) {
    TextObject *t = [self.textObjects objectAtIndex:i];

    width = MAX(width, t.size.width);

    // Fits on a page, add the object, update the size
    if (height + t.size.height < kReportPDFDefaultHeight) {
        [itemsOnAPage addObject:t];
        height += t.size.height;
    }
    // Doesn't fit on a page, add the items to the page
    else {

        [pagesArray addObject:itemsOnAPage];
        [pagesArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            NSLog(@"obj before: %@", [obj description]);
        }];

        [itemsOnAPage removeAllObjects];
        [pagesArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            NSLog(@"obj after: %@", [obj description]);
        }];
    }
}

但是,当我开始一个新页面时,我想清除初始数组并开始向第二页添加对象,依此类推。但是如果我清除了我的数组,那么我的pagesArray最终会变空。我怎么能绕过这个?谢谢!

1 个答案:

答案 0 :(得分:0)

当您将itemsOnAPage数组插入pagesArray时,需要制作一份副本,否则您最终会得到最后一页的多个副本:

        [pagesArray addObject:[NSArray arrayWithArray:itemsOnAPage]];