2012-01-18 100 views
0

我必須檢查一個NSMutableArray是否多次包含一個對象(例如數組包含1,2,3,1,4),我想知道數組1中存在多少次1。我知道containsObject:,但如何使用它進行這種檢查?NSMutableArray包含對象

回答

1
+0

Hey ElanthiraiyanS:感謝您寶貴的建議,它真的是一個新的和有趣的事情,我來了今天學習。我已經解決了我的問題,感謝您的支持。我這樣做:NSCountedSet * mySet = [[NSCountedSet alloc] initWithArray:checkedBusinessIdArray]; int valueCount = [mySet countForObject:m_CheckinedBusinessID]; NSLog(@「此對象的計數是%d」,valueCount); (valueCount> = 2) 如果(valueCount> = 2) {business_insertinCount = NO; } – user1115985 2012-01-18 05:05:55

+0

歡迎光臨。很高興它有幫助。 – sElanthiraiyan 2012-01-18 05:11:18

0

一個快速的方法是將其轉換爲NSSet然後返回到數組。 NSSets不能包含重複項。或者使用循環將值逐個複製到新數組中,並且每次在添加對象之前檢查新數組是否包含該對象的副本。

+0

但我需要知道重複值count,重複值在數組中出現多少次,請給出建議.. – user1115985 2012-01-18 04:02:54

0

這取決於你的對象類型,但如果它們可以被用來作爲密鑰一個NSDictionary,我會創建一個NSMutableDictionary指向包含計數每個NSNumber的對象對象實例。喜歡的東西:

NSArray *array = whatever; 
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:array.count]; 
for (id obj in array) 
{ 
    NSNumber *number = [d objectForKey:obj]; 
    if (number == nil) 
    { 
    [d setObject:[NSNumber numberWithInt:1] forKey:obj]; 
    } 
    else 
    { 
    [d setObject:[NSNumber numberWithInt:([number intValue]+1) forKey:obj]; 
    } 
} 

這段代碼的最後,你只剩下一個NSDictionary,其中鍵是你原來的對象,而值是包含在當初的那個鍵存在的次數NSNumbers。