Перечислите NSDictionary с ключами и объектами, стиль PHP

Я знаю, что вы можете перечислить ключи или значенияNSMutableDictionary с помощьюNSEnumerator, Возможно ли сделать оба вместе? Я ищу что-то похожее на PHPforeach перечислитель вроде:

foreach ($dictionary as $key => $value);
 RolandasR23 сент. 2010 г., 07:22

Ответы на вопрос(3)

Теперь намного проще:

for (NSString * key in dict)
{
    id/* or your type */ value = dict[key];
    ...
}
 DawnSong31 дек. 2015 г., 14:18
Самый простой и самый замечательный ответ.
 Greg Brown05 сент. 2016 г., 14:56
Этот ответ не отвечает на вопрос. ОП искал способ перечислять ключи и значения вместе. Этот подход только перечисляет ключи и требует дополнительного поиска для получения значения, связанного с каждым ключом.
NSDictionary* d = [NSDictionary dictionaryWithObjectsAndKeys:@"obj1",@"key1",
                                                           @"obj2",@"key2",
                                                           @"obj3",@"key3",
                                                           @"obj4",@"key4",nil];

for (id key in [d allKeys]) {
    NSLog(@"%@ - %@",key,[d objectForKey:key]);
}

Выходы:

keytest[7880:a0f] key3 - obj3
keytest[7880:a0f] key1 - obj1
keytest[7880:a0f] key4 - obj4
keytest[7880:a0f] key2 - obj2
 Wevah23 сент. 2010 г., 07:42
Одна вещь: использование быстрого перечисления наNSDictionary уже перебирает ключи, поэтому[d allKeys] не нужно
 ACBurk23 сент. 2010 г., 07:52
ах, приятно знать
 ACBurk23 сент. 2010 г., 18:51
да, блоки - это будущее, но иногда нам приходится жить прошлым
 typeoneerror23 сент. 2010 г., 08:17
Я думаю, что блоки лучше, но это то, что я в итоге сделал, так как не могу использовать блоки в своем приложении для iphone.
Решение Вопроса

Возможно, посмотрите на метод NSDictionary:

enumerateKeysAndObjectsUsingBlock:(void (^)(id key, id obj, BOOL *stop))

Если вы не знакомы с блоками в C / Objective-C, это хороший учебник:http://thirdcog.eu/pwcblocks/

 typeoneerror23 сент. 2010 г., 08:16
Я видел это, и мне понравилось то, что я видел, но блоки кажутся только iOS 10.6 и 4.0. Все еще поддерживает 3.1.3 в моем приложении.

Ваш ответ на вопрос