1

配列にオブジェクトを追加しようとしています。私が具体的にやろうとしているのは、ページに収まるアイテムの数を計算し、それらのアイテムを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]);
        }];
    }
}

ただし、新しいページを開始するときに、最初の配列をクリアして、2番目のページにオブジェクトを追加し始めたいと思います。しかし、配列をクリアすると、pagesArrayは空になります。どうすればこれを回避できますか?ありがとう!

4

1 に答える 1

0

itemsOnAPage配列をに挿入するときに配列のコピーを作成する必要がありますpagesArray。そうしないと、最後のページの複数のコピーが作成されてしまいます。

        [pagesArray addObject:[NSArray arrayWithArray:itemsOnAPage]];
于 2012-08-29T21:53:44.727 に答える