【问题标题】:Ordering an NSArray with NSDictionaries with objects使用带有对象的 NSDictionaries 对 NSArray 进行排序
【发布时间】:2014-07-24 23:03:32
【问题描述】:

我有一个字典数组,其中包含如下图所示的对象:

我遇到的问题是我需要按日期对数组进行排序,例如在第一个对象中,我有一个大于第二个对象的 dueDate 的 DueDate,然后我必须交换它们,换句话说我需要根据dueDate以升序对数组中的字典进行排序,有人有想法吗?我尝试过使用NSpredicate,使用sortDescriptors但它不起作用,这是我的sortDescriptors代码:

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"dueDate" ascending:YES];
NSSortDescriptor *descriptor2 = [[NSSortDescriptor alloc] initWithKey:@"overDueDate" ascending:YES];
NSArray *descriptors = @[descriptor, descriptor2];
tasksResultArray = [tasksResultArray sortedArrayUsingDescriptors:descriptors];

提前致谢。

【问题讨论】:

    标签: objective-c nsarray nsdictionary nssortdescriptor


    【解决方案1】:

    这可以更简单:

    arrayOfDictionaries = [arrayOfDictionaries sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    
        // The logic for comparing dates, and returning the corresponding result
    
        NSDate *date1 = (NSDate *) [(NSDictionary *)obj1 objectForKey:@"dueDate"];
        NSDate *date2 = (NSDate *) [(NSDictionary *)obj2 objectForKey:@"dueDate"];
    
        return [date1 compare:date2];
    }];
    

    【讨论】:

    • 我试过了,但它不起作用,日期变量为零,还有一些字典中的 pendingTasks 数组有超过 1 个元素,有什么想法吗?
    • 尝试弄清楚如何正确地从字典中提取日期,也许您需要对此进行一些解析。我认为一旦你有了可用的日期,它应该可以正常工作。
    猜你喜欢
    • 2011-03-22
    • 2012-02-14
    • 2014-02-22
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多