1
我正在過濾一個數組,可以有一個謂詞可以有很多對象。我想限制因性能原因返回的結果。該數組沒有排序,所以一旦達到限制,我想停止搜索。用謂詞過濾數組,限制結果?
這可能嗎?我不確定是否通過謂詞指令或其他方式。
我正在過濾一個數組,可以有一個謂詞可以有很多對象。我想限制因性能原因返回的結果。該數組沒有排序,所以一旦達到限制,我想停止搜索。用謂詞過濾數組,限制結果?
這可能嗎?我不確定是否通過謂詞指令或其他方式。
我認爲你可以使用的indexesOfObjectsPassingTest
和objectsAtIndexes
這個組合:
NSUInteger count = 0;
NSUInteger limit = ...;
NSIndexSet *set = [myArray indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
BOOL pass = ... // check if object passes test;
if (pass) {
count++;
if (count >= limit)
*stop = YES; // stops further processing of the array
}
return pass;
}];
NSArray *filteredArray = [myArray objectsAtIndexes:set];
是的,這是一個可能的解決方案,謝謝。我可以使用'evaluateWithObject:'來測試對象。我更喜歡更優雅的方法,但如果沒有其他的東西,我會使用'* PassingTest:'方法。 –
你居然打在內存中的數據過濾性能問題? –
@DavidRönnqvist我的過濾計算量很大,所以儘管很多對象都是昂貴的。 –