我从服务器获取对象列表,并将日期作为属性。 我收到的自行车项目,我需要将它们安排在一张桌子上,但除以天数(按部分)。
我遇到了一些麻烦,因为我可以修复循环中的所有内容。
我所做的是,使用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];
由于
答案 0 :(得分:5)
这样的事情会起作用:
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 }];
}
它为您提供了一个字典,其中每个键都是节标题(日期字符串),每个值都是该节的对象数组。
现在的诀窍是创建一个包含日期键的数组,以便按照您希望它们在表中显示的方式排序数组。您不能简单地对日期字符串进行排序,因为它们将按字母顺序排列而不是按时间顺序排列。