gpt4 book ai didi

objective-c - 对Objective-C中具有不同键值对象的两个数组进行排序和合并再排序

转载 作者:行者123 更新时间:2023-12-01 19:15:51 25 4
gpt4 key购买 nike

我对排序和合并问题之一感到困惑。让我描述我的问题如下。

步骤1.我有一个数组。我只是在编写数组的控制台日志以了解其结构。

(
{
id_ = 1,
name_ = "some xyz name",
date_ = "2012/01/24 05:25:30 AM"
},
{
id_ = 2,
name_ = "some ABC name",
date_ = "2012/01/25 06:25:30 AM"
},
{
id_ = 1,
name_ = "some PQR name",
date_ = "2012/01/22 04:30:30 AM"
},
)

步骤2.因此,为了对数组进行排序,我放置了以下代码。
NSArray *myArray = // someHow I get those values listed above.
NSSortDescriptor *sortD1=[[NSSortDescriptor alloc] initWithKey:@"date_" ascending:YES];
myArray = [myArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortD1]];

第3步。现在,我有一套完整的排序数组。

步骤4.我有另一种类似的数组。
(
{
obj_id_ = 11,
obj_date_ = "2012/01/24 05:25:30 AM"
},
{
obj_id_ = 21,
obj_date_ = "2012/01/23 05:25:30 AM"
},
{
obj_id_ = 17,
obj_date_ = "2012/01/21 05:25:30 AM"
},
)

步骤5.因此,为了对数组进行排序,我放置了以下代码。
NSArray *myArray2 = // someHow I get those values listed above.
NSSortDescriptor *sortD2=[[NSSortDescriptor alloc] initWithKey:@"obj_date_" ascending:YES];
myArray2 = [myArray2 sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortD2]];

步骤6.现在,我必须合并两个数组,但是应该根据日期对其进行排序。
(
{
obj_id_ = 17,
obj_date_ = "2012/01/21 05:25:30 AM"
},
{
id_ = 1,
name_ = "some PQR name",
date_ = "2012/01/22 04:30:30 AM"
},
{
obj_id_ = 21,
obj_date_ = "2012/01/23 05:25:30 AM"
},
{
id_ = 1,
name_ = "some xyz name",
date_ = "2012/01/24 05:25:30 AM"
},
{
obj_id_ = 11,
obj_date_ = "2012/01/24 05:25:30 AM"
},
{
id_ = 2,
name_ = "some ABC name",
date_ = "2012/01/25 06:25:30 AM"
}
)

我想要的预期输出如上所述。只是我不知道合并具有不同键值的两个不同数组的逻辑。我试图为此建立一个逻辑,但它返回一个空数组及其错误。因此,我不在此发布它。

注意:如果该问题重复,请在拒绝投票之前通过评论告知我。我将删除它,并感谢必要的链接和支持。 :)

最佳答案

首先,我将定义一个函数,该函数根据传递的对象返回日期:

- (NSDate *)dateForObject:(id obj) {
if ([obj class] == [MyClass1 class]) {
return ((MyClass1) obj).date_;
}
else {
return ((MyClass2) obj).obj_date_;
}
}

然后,我将使用块进行排序:
NSArray *sortedArray;
sortedArray = [mergedArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSDate *aDate = [self dateForObject:a];
NSDate *bDate = [self dateForObject:b];
return [aDate compare:bDate];
}];

关于objective-c - 对Objective-C中具有不同键值对象的两个数组进行排序和合并再排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13411254/

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