2012-10-29 69 views
0

如何獲取包含在NSMutableIndexSet中的最高(數字)索引的索引?NSMutableIndexSet中最高索引的索引

I.e最高NSUInteger(index)在NSMutableIndexSet中的位置?

謝謝先進。

NSArray *results = [subCategory filteredArrayUsingPredicate:predicate]; 

if([results count] == 1) { 

    returns = [results objectAtIndex:0]; 

} 

else if ([results count] > 1) { 

    NSMutableIndexSet *set = [NSMutableIndexSet indexSet]; 

    for (NSString *subCat in results) { 

     NSUInteger indexs = 0; 

     for (NSString *comp in components) { 

      if ([subCat rangeOfString:comp].location != NSNotFound) { 

       indexs ++; 

      } 

     } 

     [set addIndex:indexs]; 

    } 


    // find the position of the highest amount of matches in the index set 

    NSUInteger highestIndex = ...; 

    returns = [results objectAtIndex:highestIndex]; 

} 
+0

其實,給你的代碼,是不是最高的指數總是會被加入最後?下面的答案有助於更一般的情況。 – rmaddy

+0

@rmaddy,我有5分鐘才能接受你的答案,它完美的作品,謝謝。 –

回答

0

跟蹤,你將值添加到索引集:

NSMutableIndexSet *set = [NSMutableIndexSet indexSet]; 
NSUInteger maxIndexs = 0; 
NSUInteger indexOfMax = NSNotFound; 
for (NSString *subCat in results) { 
    NSUInteger indexs = 0; 
    for (NSString *comp in components) { 
     if ([subCat rangeOfString:comp].location != NSNotFound) { 
      indexs ++; 
     } 
    } 

    if (indexes > maxIndexs) { 
     maxIndexs = indexs; 
     indexOfMax = set.count; 
    } 
    [set addIndex:indexs]; 
} 

// find the position of the highest amount of matches in the index set 
NSUInteger highestIndex = indexOfMax; 

returns = [results objectAtIndex:highestIndex]; 
0

NSMutableIndexSetNSIndexSet一個子類。 NSIndexSet理解lastIndex selector

返回無論是在設置索引或者未找到指標的最後一個索引。

+0

嗨,羅布,我明白這個問題可能相當模糊。我想收到該組中最大號碼的索引。 –

+0

「NSIndexSet」中的最大數字是該集合的「lastIndex」。也許你實際上想要做的是找出'結果'中最常出現哪些「組件」元素(作爲子字符串)。那是你要的嗎? –

+0

或者你是否試圖找出'results'的哪個元素包含'components'的最多元素作爲子字符串? –