2013-06-27 97 views

回答

4

我不確定這是否是最好的方法,但它很容易。我創建了一個方法來驗證NSArray內是否存在NSDictionary。在這個函數內部,我將NSDictionary s轉換爲NSString並對它們進行比較。

- (BOOL)verifyIfDictionary:(NSDictionary *)dict existsInsideArray:(NSArray *)array 
{ 
    BOOL result = NO; 
    NSString *dictStr = [NSString stringWithFormat:@"%@",dict]; // convert dictionary to string 
    for (NSDictionary *d in arrayOfDictionaries) 
    { 
     NSString *dStr = [NSString stringWithFormat:@"%@",dict]; // same conversion as above conversion 
     // now, I just have to compare the resulting strings 
     if ([dictStr isEqualToString:dStr]) 
      result = YES; 
    } 

    return result; 
} 

現在你只需要通過你的NSArray S的一個迭代,用這種方法,像這樣:

NSArray *arrayOfDictionaries1; 
NSArray *arrayOfDictionaries2; 

// initialize them, fill with data, do your processing.. etc, etc... 

// then, when you want to verify: 
for (NSDictionary *dict in arrayOfDictionaries1) 
{ 
    if ([self verifyIfDictionary:dict existsInsideArray:arrayOfDictionaries2]) 
    { 
     NSLog(@"exists!"); 
    } 
} 
0

要檢查是否array1包含array2所有項目:

NSMutableArray *mutableArrayToCheck = [array2 mutableCopy]; 
[mutableArrayToCheck removeObjectsInArray:array1]; 

if (array2.count > 0 && mutableArrayToCheck.count == 0) { 
    // array2 contains all the items in array1 
} 

忽略的陣列爲第二的內容的類型,只是覺得數字。我們有2個數組:

array1 = [ 1, 2, 3 ] 
array2 = [ 1, 3 ] 

如果我們從數組2刪除陣列1的項目,結果是一個空數組,然後我們知道,所有的數組2的項目也分別在陣列1。

removeObjectsInArray:通過搜索數組和比較每個項目,爲我們做到這一點。我們只需要檢查結果。

無論數組的內容是什麼,只要它們實現了hashisEqual:,這都可以工作。

+0

可你explaing這條線的工作原理[mutableArrayToCheck removeObjectsInArray:數組1]。以及如何比較數組? – HelenaM