簡體   English   中英

將NSArray拆分為較小的NSArray組以進行分頁

[英]split NSArray in groups of smaller NSArrays for paging

我有一個NSArray說100個NSManagedObjects ,我需要將它分成一個NSArray ,其中包含10個NSArray對象,每個對象持有10個NSManagedObjects ,我將如何實現?

我打算做一些分頁,這對我來說很有用。

你是如何得到這些NSManagedObjects 如果您正在使用NSFetchRequest ,您可能希望保留它,並且一次只能獲得10個結果。

這是我的代碼:

[object splitArrayWithArray:arrayWith100Objects rangeNumber:10];

- (NSArray*) splitArrayWithArray:(NSArray*)rawArray rangeNumber:(int)rangeNumber{
    int totalCount = rawArray.count;
    int currentIndex = 0;

    NSMutableArray* splitArray = [NSMutableArray array];

    while (currentIndex<totalCount) {
        NSRange range = NSMakeRange(currentIndex, MIN(rangeNumber, totalCount-currentIndex));
        NSArray* subArray = [rawArray subarrayWithRange:range];
        [splitArray addObject:subArray];
        currentIndex +=rangeNumber;
    }
    return splitArray;
}

沿着這些線的東西應該工作,而不是將其分成單獨的數組

//make a new range for each page
NSRange myRange = NSMakeRange(10, 10);
NSArray * myArray = [NSArray array];

//...pass both into a function
for (int i = myRange.location; i < myRange.location + myRange.length; i++) {
    //stuff with the array elements
    [[myArray objectAtIndex:i] doSomething];
}

這不是一個單行,但這會將一個數組拆分成頁面:

NSArray *arrayToSplit = ...

int pageSize = 50;
NSMutableArray *arrayOfPages = [NSMutableArray new];

NSRange range = NSMakeRange(0, pageSize);

while (range.location < arrayToSplit.count) {
    if (range.location + range.length >= arrayToSplit.count)
        range.length = arrayToSplit.count - range.location;

    [arrayOfPages addObject:[arrayToSplit objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:range]]];

    range.location += range.length;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM