2015-01-18 4 views
-1

Я quering Разбор и получить массив обратноSplit NSArray на NSDictionary

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

Я хочу, чтобы отсортировать массив в словарь на основе значения района, который находится в объекте точки, так что я могу использовать TableView с разделами (названия района раздела)

[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 значение курса

Итак, чтобы сделать его легко понять: объекты пущу g из Parse являются объектами Point со следующим имуществом: Название, округ, город

Я хочу создать NSdictionary с районами (так что мне нужно сначала собрать их из объектов, потому что я их не знаю) как ключ, а значение для этого ключа - массив с точками, находящимися в этом районе.

Я не знаю заранее, какими будут районы. Их нужно будет выбрать из массива объектов, который возвращается из Parse.

Мой последний объект, который я хочу создать, представляет собой nsdictionary с массивами точек для каждого отдельного района (это ключ).

Пример: [@ «districtA»: массив с точечными объектами, которые имеют districtA в своем районе собственности, и т.д. и т.п.]

, что это лучший способ сделать это, потому что я действительно не могу видеть, как сделай это ?

+0

Сколько 'districts' есть? – Larme

+0

Не видите причину, по которой вы хотите это сделать. Возможно, более подробное описание? –

+0

Я думаю, вам нужно что-то вроде '[dict setValue: AnArrayHavingAllDistrictValuesOfSpecifiedKey forKey: YourDistrictNameAsAKey];'. поэтому вам может понадобиться вложенный цикл. – NeverHopeless

ответ

1

Вы ответили на свой вопрос, когда вы говорите:

Я хочу создать NSDictionary с районами, как ключ и значение для этого ключа является массив точек, которые находятся в этом районе ,

[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]); 
    } 
}]; 
+0

Я не знал, что вы можете использовать словарь, такой как массив: \, поэтому его также не проблема в том, как объекты сортируются в массиве объектов? Или было бы лучше для производительности? – MichaelAngelo

+0

Да, вам нужно добавить новый изменчивый массив в качестве значения района каждый раз, когда точка какого-то района не была добавлена ​​раньше. Для следующих пунктов этого района будет изменяться массив, который вам нужен, вам просто нужно добавить эту новую точку. –

+0

Делает смысл и отлично работает :). благодаря – MichaelAngelo

Смежные вопросы