Я не уверен, что полностью понимаю вопрос, но я думаю, что ваш массив chunks
содержит длинный список данных, упорядоченный таким же образом (т. Е. 0-й, 12-й, 24-й, 36-й ... элементы - это всеtype
, а 1-й, 13-й, 25-й, 37-й ... элементы - все name
).Если это так, вы можете использовать что-то вроде этого:
NSArray *keys = [NSArray arrayWithObjects:@"type", @"name", @"street", @"address1", @"address2", @"town", @"county", @"postcode", @"number", @"coffee club", @"latitude", @"longitude", nil];
for (NSUInteger i = 0; i < [chunks count]; i += [keys count])
{
NSArray *subarray = [chunks subarrayWithRange:NSMakeRange(i, [keys count])];
NSDictionary *dict = [[NSDictionary alloc] initWithObjects:subarray forKeys:keys];
// do something with dict
[dict release];
}
Обратите внимание, что вы не можете иметь два разных значения для одного и того же ключа с NSDictionary
.То есть, если вы установите два разных значения для клавиши type
, будет сохраняться только последнее установленное значение.
Редактировать
Если ваш массив не кратен 12, потому что, например,в конце он содержит мусорные данные, вместо этого вы можете использовать другой стиль зацикливания:
// max should be a multiple of 12 (number of elements in keys array)
NSUInteger max = [chunks count] - ([chunks count] % [keys count]);
NSUInteger i = 0;
while (i < max)
{
NSArray *subarray = [chunks subarrayWithRange:NSMakeRange(i, [keys count])];
NSDictionary *dict = [[NSDictionary alloc] initWithObjects:subarray forKeys:keys];
// do something with dict
[dict release];
i += [keys count];
}