1

我有两个字典数组,我想比较它们

实际上字典结构就像Facebook的兴趣列表,如下所示

我想找出我和我朋友之间的共同兴趣

我检索了两个用户的兴趣列表,但是当我比较兴趣字典时,因为 created_time 不同,所以我没有得到通用字典

        category = "Musical instrument";
        "created_time" = "2011-06-11T09:10:07+0000";
        id = 113099055370169;
        name = Guitar;

            category = "Musical instrument";
            "created_time" = "2013-09-27T06:02:28+0000";
            id = 113099055370169;
            name = Guitar;

任何人都可以提出任何有效的方法来做到这一点

现在我正在使用,但它并没有给我共同的兴趣,因为 created_time 不同

for (int count = 0; count < [arrFriendsInterest count]; count++)
{
    NSDictionary *dictFriend = [arrFriendsInterest objectAtIndex:count];

    if ([arrMyIntrest containsObject:dictFriend]) {
        [arrMutualInterest addObject:dictFriend];
    }

}

其中 arrFriendsInterest 是包含朋友兴趣的字典数组

而 arrMyIntrest 是包含我的兴趣的字典数组×评论只能编辑 5 分钟×评论只能编辑 5 分钟×评论只能编辑 5 分钟

4

3 回答 3

0

而不是使用 NSDictionary 为什么不使用自定义类?

您可以获得很多好处:

  • 代码完成
  • 编译时检查
  • 自定义 isEqual 方法
  • 代码是不言自明的
于 2013-09-27T11:57:40.300 回答
0

首先,您是否将这些数据存储在 NSArray 中?

如果是,那么请使用以下代码更容易使用。

// Do any additional setup after loading the view, typically from a nib.
NSArray *ar1 = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:@"Musical instrument",@"category",@"2011-06-11T09:10:07+0000",@"created_time",@"113099055370169",@"id", @"Guitar",@"name", nil], nil];


NSArray *ar2 = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:@"Musical instrument",@"category",@"2013-09-27T06:02:28+0000",@"created_time",@"113099055370169",@"id", @"Guitar",@"name", nil], nil];

NSMutableSet* set1 = [NSMutableSet setWithArray:ar1];
NSMutableSet* set2 = [NSMutableSet setWithArray:ar2];
[set1 unionSet:set2]; //this will give you only the obejcts that are in both sets

NSArray* result = [set1 allObjects];
NSLog(@"%@",[result mutableCopy]);

快乐编码.!!!

于 2013-09-27T11:31:11.693 回答
0

这假设您只需要比较“id”值:

NSArray* myIds = [arrMyInterest valueForKey:@"id"];

for (int count = 0; count < [arrFriendsInterest count]; count++) {
    NSDictionary *dictFriend = [arrFriendsInterest objectAtIndex:count];

    // Not clear whether "id" is NSString or NSNumber -- use whichever
    NSString* friendId = [dictFriend valueForKey:@"id"];
    if ([myIds containsObject:friendId]) {
         [arrMutualInterest addObject:dictFriend];
    }
}
于 2013-09-27T11:54:36.617 回答