gpt4 book ai didi

iphone - 匹配字典数组 - 其中一个数组不完全等于另一个数组

转载 作者:行者123 更新时间:2023-11-29 04:27:05 26 4
gpt4 key购买 nike

我必须解决这个难题,这几天我一直在苦苦思索。所以我有 2 个数组。

这是第一个:

 {
categories = (
{
id = "user/06617213952393255174/label/Main Folder";
label = "Main Folder";
}
);
firstitemmsec = 1297785485208;
htmlUrl = "http://awebslife.tumblr.com/";
id = "feed/http://awebslife.tumblr.com/rss";
sortid = D5DB1FE2;
title = "awebslife.tumblr.com/rss";
},
{
categories = (
{
id = "user/06617213952393255174/label/Main Folder";
label = "Main Folder";
}
);
firstitemmsec = 1344454207448;
htmlUrl = "http://awholelotofnothing.net";
id = "feed/http://awholelotofnothing.net/feed/";
sortid = 7098B8F7;
title = "awholelotofnothing.net/feed/";
},

如您所见,有 2 个对象,字典。在我的真实应用程序中,它们是更多的对象,但这只是一个例子。另一个数组:

    {
count = 4;
id = "feed/http://awebslife.tumblr.com/rss";
newestItemTimestampUsec = 1346087733278957;
},

这就是实际的问题。我试图将第二个数组与第一个数组匹配并将它们组合起来,但是正如您所看到的,第二个数组仅包含计数 > 0 的对象。在我的情况下,在第一个数组中,我的第二个对象的计数为 0。所以如果我匹配它们,合并到一个数组后,我只剩下一个对象,而另一个对象我不知道如何为其添加诸如 count = 0 之类的内容。以下是我如何匹配它们:

-(void)gotUnreadCount:(NSDictionary *)unreadCount
{
NSMutableArray *mutableArr = [NSMutableArray array];

for (NSDictionary *unreadCountDict in unreadCount) {
for (NSDictionary *feedDict in self.subcriptionsNC) {
NSMutableDictionary *feedDictMutable = [feedDict mutableCopy];
if ([[unreadCountDict objectForKey:@"id"] isEqualToString:[feedDict objectForKey:@"id"]]) {

[feedDictMutable setObject:[unreadCountDict objectForKey:@"count"] forKey:@"count"];
[mutableArr addObject:feedDictMutable];
}
}
}
}

self.subscriptionsNC 是第一个数组,unreadCount 是第二个数组。

我剩下 self.subscriptionsNC 中的第一个对象,其计数 > 0。另一个计数等于 0 的对象未添加到我的组合数组中,因为它不存在于第二个数组中。 (这只是覆盖 self.subscriptionsNC)

如果第一个数组中的某个项目没有计数(注意:除了第二个数组中没有指定计数,第二个数组不显示计数等于 0),我希望将计数分配为 0。

谢谢!

最佳答案

当您检查两个数组之间的 ID 是否匹配时,您永远不会处理不匹配的情况。尽管在这种情况下,处理循环会变得很棘手,因为您必须不断检查之前是否尚未添加该项目,等等。希望这是有道理的,现在已经晚了:)

这里有一些代码似乎可以解决示例集中的数据问题:

NSDictionary *firstNoCount = @{@"id" : @"feed/http://awebslife.tumblr.com/rss"};
NSDictionary *firstWithCount = @{ @"id" : @"feed/http://awebslife.tumblr.com/rss", @"count" : @4 };
NSDictionary *secondNoCount = @{ @"id" : @"feed/http://awholelotofnothing.net/feed/" };
NSArray *subscriptionsWithoutCount = @[ firstNoCount, secondNoCount ];
NSArray *subscriptionsWithUnreadCount = @[ firstWithCount ];
NSArray *allIds = [subscriptionsWithoutCount valueForKey:@"id"];
NSArray *idsWithUnreadCount = [subscriptionsWithUnreadCount valueForKey:@"id"];

NSIndexSet *indexesWithZeroCount = [allIds indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
return ![idsWithUnreadCount containsObject:obj];
}];

NSMutableArray *combined = [NSMutableArray array];

[subscriptionsWithoutCount enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSMutableDictionary *mutableItemDictionary = [(NSDictionary *)obj mutableCopy];
NSNumber *unreadCountNumber = nil;
if ([indexesWithZeroCount containsIndex:idx])
{
unreadCountNumber = @0;
}
else
{
NSInteger indexInCountArray = [idsWithUnreadCount indexOfObject:[mutableItemDictionary objectForKey:@"id"]];
NSDictionary *countDictionary = [subscriptionsWithUnreadCount objectAtIndex:indexInCountArray];
unreadCountNumber = [countDictionary objectForKey:@"count"];
}
[mutableItemDictionary setObject:unreadCountNumber forKey:@"count"];
[combined addObject:mutableItemDictionary];
}];

NSLog(@"combined = %@",combined);

关于iphone - 匹配字典数组 - 其中一个数组不完全等于另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12173224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com