gpt4 book ai didi

ios - 按日期分组对象

转载 作者:行者123 更新时间:2023-12-01 17:40:43 25 4
gpt4 key购买 nike

我从服务器获取对象列表,它们具有日期作为属性。
我收到的骑行元素,我需要将它们排列在一张 table 上,但按天(按部分)划分。

我遇到了一些麻烦,因为我可以修复循环中的所有内容。

我所做的是,使用 NSDateFormatteris 创建一个包含节数的数组。但从逻辑上讲,我不知道如何在循环中创建所有内容。

NSMutableArray *singleSectionArray = [[NSMutableArray alloc] init];
NSMutableArray *sectionsArray = [[NSMutableArray alloc] init];

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
int i = 0;
NSDateFormatter *df = [[NSDateFormatter alloc] init];

for (PFObject *object in objects) {
[df setDateFormat:@"MMMM d EEEE"];
NSString *dateString = [[NSString alloc] initWithFormat:@"%@",[df stringFromDate:object.createdAt]];
NSArray *dateArray = [dateString componentsSeparatedByString:@" "];
BOOL sectionExist = [sectionsArray containsObject:[dateArray objectAtIndex:1]];

if (sectionExist == 0) {
[sectionsArray addObject:[dateArray objectAtIndex:1]];
[singleSectionArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:
object.createdAt,@"date",
object.objectId,@"objectId",
nil]];
} else {
//???
}

}

...

[self.tableView reloadData];

我会有这样的结构
//Section
NSArray *singleSectionArray = [[NSArray alloc] initWithObjects:@"Object 1", @"Object 2", @"Object 3", nil];
NSDictionary * singleSectionDictionary = [NSDictionary dictionaryWithObject: singleSectionArray forKey:@"data"];
[dataArray singleSectionDictionary];
//Section
NSArray *singleSectionArray = [[NSArray alloc] initWithObjects:@"Object 4", @"Object 5", nil];
NSDictionary * singleSectionDictionary = [NSDictionary dictionaryWithObject: singleSectionArray forKey:@"data"];
[dataArray singleSectionDictionary];

谢谢

最佳答案

像这样的东西会起作用:

NSMutableDictionary *sections = [NSMutableDictionary dictionary];

for (PFObject *object in objects) {
[df setDateFormat:@"MMMM d EEEE"];
NSString *dateString = [df stringFromDate:object.createdAt];
NSMutableArray *sectionArray = sections[dateString];
if (!sectionArray) {
sectionArray = [NSMutableArray array];
sections[dateString] = sectionArray;
}

[sectionArray addObject:@{ @"date" : object.createdAt, @"objectId" : object.objectId }];
}

这为您提供了一个字典,其中每个键是节标题(日期字符串),每个值是该节的对象数组。

现在的诀窍是创建一个包含日期键的数组,以便数组按照您希望它们在表中出现的方式排序。您不能简单地对日期字符串进行排序,因为它们将按字母顺序而不是按时间顺序显示。

关于ios - 按日期分组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20460271/

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