拆分 nsarray 到 nsdictionary

Split nsarray to nsdictionary

我正在查询 Parse 并返回一个数组

PFQuery *query = [Points query];
[query whereKey:@"city" equalTo:[SharedParseStore sharedStore].chosenCity];
query.cachePolicy = kPFCachePolicyCacheThenNetwork;

我想根据 Point 对象中的地区值将数组排序到字典中,以便我可以使用带有部分(地区部分名称)的表视图

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
    NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];

    for (Points *point in objects) {
        [dict setValue:point forKey:point.district];
    }            
        block(dict, error);
    } else {

        NSLog(@"Error: %@ %@", error, [error userInfo]);
    }
}];

问题是它当然只增加了 1 个值

为了便于理解: 来自 Parse 的对象是具有以下 属性 的 Point 对象: 姓名、地区、城市

我想用地区创建一个 NSdictionary(所以我需要先从对象中收集它们,因为我不知道它们)作为键,该键的值是一个包含点的数组在那个区。

我事先不知道这些地区是什么。它们需要从 Parse 返回的对象数组中选取。

我要创建的最后一个对象是一个 nsdictionary,其中包含每个不同地区的点数组(这是关键)。

示例: [@"districtA" : 一个包含 Point 对象的数组,这些对象在其区域 属性 中有 districtA,等等]

最好的方法是什么,因为我真的不知道该怎么做?

当您说:

时,您回答了自己的问题

I want to create a NSdictionary with the districts as a key and the value for that key is an array with the points that are in that district.

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
        NSMutableDictionary *dict = [@{} mutableCopy];

        for (Points *point in objects) {
            // if no point for that district was added before,
            // initiate a new array to store them
            if (![dict containsKey:point.district])
                dict[point.district] = [@[] mutableCopy];

            [dict[point.district] addObject:point];
        }     

        block(dict, error);

    } else {
        NSLog(@"Error: %@ %@", error, [error userInfo]);
    }
}];