0

我有如下三个数组

names                      birthdate                remanning 

"Abhi Shah",                 "01/14",                  300
"Akash Parikh",              "12/09/1989",             264
"Anand Kapadiya",            "12/01",                  256
"Annabella Faith Perez",     "03/02",                  347
"Aysu Can",                  "04/14/1992",             25
"Chirag Pandya"              "10/07/1987"              201

如果你给我代码来告诉我如何在 NSDictionary 中添加这三个数组,然后根据“remaning”数组对整个字典进行排序(升序),这将非常有帮助

请注意 Dic 中的所有内容都应该更改。不仅是remaning数组。姓名和生日应该以同样的方式更改剩余天数正在更改

非常感谢你

4

3 回答 3

3

我建议您更改项目的设计并 创建一个与具有相同属性的模型:

@interface YourModel : NSObject
    @property (strong) NSString *name;
    @property (strong) NDDate *birthDate;
    @property NSInteger remaining;
@end

然后在你的类中创建一个 NSMutableArray,然后继续添加它们。

与处理 3 个并行数组相比,这将使您的工作更轻松,例如搜索、排序、过滤。

于 2013-03-20T07:19:34.327 回答
1

如果您使用 Anoop 提出的设计,使用块的排序代码将类似于以下内容:

NSArray *sortedArray = [yourArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
    NSInteger first = [(YourModel*)a remaining];
    NSInteger second = [(YourModel*)b remaining];
    return [first compare:second];
}];
于 2013-03-20T07:30:29.823 回答
1

您必须获取字典或任何结构中的每条记录(姓名、出生日期、重新分配)。并且应该创建该字典的数组。要根据您的要求对数组进行排序,可以使用任何排序机制。

-(void)sort
{
    //This is the array of dictionaries, where each dictionary holds a record
    NSMutableArray * array; 
    //allocate the memory to the mutable array and add the records to the arrat

    // I have used simple bubble sort you can use any other algorithm that suites you
    //bubble sort
    //
    for(int i = 0; i < [array count]; i++)
    {
        for(int j = i+1; j < [array count]; j++)
        {
            NSDictionary *recordOne = [array objectAtIndex:i];
            NSDictionary *recordTwo = [array objectAtIndex:j];

            if([[recordOne valueForKey:@"remaining"] integerValue] > [[recordTwo valueForKey:@"remaining"] integerValue])
            {
                [array xchangeObjectAtIndex:i withObjectAtIndex:j];
            }
        }   
    }

    //Here you get the sorted array
}

希望这可以帮助。

于 2013-03-20T07:31:51.163 回答