【发布时间】:2021-07-07 17:58:50
【问题描述】:
我有一个数组 (self.filteredArray),它返回其中键 scheduledate 包含今天的日期(在本例中为 2021 年 4 月 12 日)的字典。控制台返回以下内容:
2021-04-12 09:14:30.942723-0700 [58012:24654705] The filtered please (
{
"node_title" = "Elisa Carmichael";
scheduleddate = "Apr 12 2021 1:00 PM";
},
{
"node_title" = "Michael Levy";
scheduleddate = "Apr 10 2021 11:00 AM, Apr 12 2021 5:00 PM";
},
{
"node_title" = "Trisha Johnson";
scheduleddate = "Apr 12 2021 6:00 PM";
}
)
我的目标是按照他们被安排的时间顺序将这些人安排在“今天”表格视图中。当 scheduledate 仅包含一个日期和时间时,以下代码可以完美运行,即。 2021 年 4 月 12 日下午 1:00。然而,有些人被安排在同一个预定日期字符串中的多个日期和时间(在上面,Michael Levy),这会破坏排序顺序。
我有没有办法编写下面的代码,以便最终数组 (self.sortedByTime) 仅按包含今天日期的“,”分隔的值排列返回的个人?
我希望这是有道理的。谢谢。
ViewController.m
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (tableView == self.todaytableView) {
self.sortedByTime = [self.filteredArray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *obj1, NSDictionary *obj2)
{
int i;
for (i = 0; i < [self.filteredArray count]; i++) {
}
NSDate *date1 = [dateFormatter dateFromString:obj1[@"scheduleddate"]];
NSDate *date2 = [dateFormatter dateFromString:obj2[@"scheduleddate"]];
return [date1 compare:date2];
}];
self.finalTimes = [[NSMutableArray alloc]initWithArray:self.sortedByTime];
return [self.finalTimes count];
}
我的目标输出:
2021-04-12 09:14:30.942723-0700 [58012:24654705] The filtered please (
{
"node_title" = "Elisa Carmichael";
scheduleddate = "Apr 12 2021 1:00 PM";
},
{
"node_title" = "Michael Levy";
scheduleddate = "Apr 12 2021 5:00 PM";
},
{
"node_title" = "Trisha Johnson";
scheduleddate = "Apr 12 2021 6:00 PM";
}
)
【问题讨论】:
-
我们不是建议您使用模型,而不是
NSDictionary吗?即,自定义NSObject带有一个名为NSString的属性title,一个NSDate属性(如果需要,也可以是一个NSArray,如果你可以有多个日期的话),如果你有两个日期,逻辑是什么?你想复制 NSDictionary?使用最新日期进行比较?较早的那个?最“接近”今天? -
我不使用 NSObject 是有原因的。我只是想让我上面的代码在我的 tableView 中从最早到最晚安排今天的时间。如果 obj1[scheduleddate] 或 obj2[scheduleddate] 字符串中列出了多个日期,我似乎无法访问“今天的时间”。 @Larme
-
您想要排序或过滤。目前还不清楚。目标输出是什么?如果你也有
{ "node_title" = "Michael Levy with old date"; scheduleddate = "Apr 01 2021 11:00 AM, Apr 03 2021 5:00 PM";}它应该出现吗?在哪里?而且你不应该对numberOfRowsInSection:进行排序,你会调用该方法太多次,它应该只排序一次。 -
啊@Larme 看到上面我的目标 nsdictionary 输出!将其添加到问题中。我基本上只是想删除我的字符串中不包含“Apr 12 2021”的任何字符串。为冗长的解释道歉,哈哈。同意,只是意识到我应该把它移到 numberOfRowsInSection 之外!感谢您的帮助:)
标签: ios objective-c sorting uitableview