Пример [NSDictionary getObjects:andKeys:]

Я не мог найти рабочий пример метода [NSDictionary getObjects:andKeys:]. Единственный пример, который я мог найти, не компилирует. Я обеспечил ошибки/предупреждения здесь в случае, если кто-то ищет их.

Причина я был смущен, состоит в том, потому что большинство методов на NSDictionary возвращается NSArray. Однако в документации это указывает, что переменные этого метода возвращаются как C массивы.

Вот ошибочные сообщения/предупреждения, которые Вы могли бы получить, если Вы следуете связанному примеру:

NSDictionary *myDictionary = ...;

id objects[]; // Error: Array size missing in 'objects'
id keys[]; // Error: Array size missing in 'keys'

[myDictionary getObjects:&objects andKeys:&keys];

for (int i = 0; i < count; i++) {
  id obj = objects[i];
  id key = keys[i];
}

.

NSDictionary *myDictionary = ...;

NSInteger count = [myDictionary count];
id objects[count];
id keys[count];
[myDictionary getObjects:&objects andKeys:&keys]; // Warning: Passing argument 1 of 'getObjects:andKeys:' from incompatible pointer type.

for (int i = 0; i < count; i++) {
  id obj = objects[i];
  id key = keys[i];
}

Я предоставлю рабочее решение как ответ на этот вопрос.

8
задан Senseful 24 May 2010 в 00:53
поделиться

1 ответ

Вот правильный способ использования этого метода:

NSDictionary *myDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"1", @"A", @"2", @"B", nil];

NSInteger count = [myDictionary count];
id objects[count];
id keys[count];
[myDictionary getObjects:objects andKeys:keys];

for (int i = 0; i < count; i++) {
  id obj = objects[i];
  id key = keys[i];
  NSLog(@"%@ -> %@", obj, key);
}
13
ответ дан 5 December 2019 в 07:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: