簡體   English   中英

iOS如何在nsmutablearray內部比較nsdictionary

[英]ios how can I compare nsdictionary inside of nsmutablearray

我有2 NSMutableArray小號含有NSMutableDictionary秒。 我需要驗證其中一個數組中的字典是否存在於另一個數組中。 我怎樣才能做到這一點?

我不確定這是否是最好的方法,但這是一個簡單的方法。 我創建了一種方法來驗證NSArray NSDictionary是否存在NSDictionary 在此函數中,我將NSDictionary轉換為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並使用此方法,如下所示:

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!");
    }
}

要檢查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 ]

如果我們從array2中刪除array1中的項目,結果是一個空數組,那么我們知道array2中的所有項目也都在array1中。

removeObjectsInArray:通過搜索數組並比較每個項目來為我們完成此操作。 我們只需要檢查結果。

不管數組的內容是什么,只要它們實現hashisEqual:

暫無
暫無

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

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