c - [NSDictionary getObjects :andKeys:] 示例

标签 c objective-c cocoa arrays nsdictionary

我找不到方法 [NSDictionary getObjects:andKeys:] 的工作示例。唯一example我能找到,不编译。我在这里提供了错误/警告,以防有人搜索它们。

我感到困惑的原因是因为 NSDictionary 上的大多数方法都返回一个 NSArray。然而,在 documentation它声明此方法的输出变量作为 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];
}

我将提供一个可行的解决方案来回答这个问题。

最佳答案

下面是使用此方法的正确方法:

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);
}

关于c - [NSDictionary getObjects :andKeys:] 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2894093/

相关文章:

objective-c - 设置不透明 :NO vs setBackgroundColor:[NSColor clearColor]

ios - 不同的初始 View Controller

ios - 与 UITapGestureRecognizer 一起使用时,UISwipeGestureRecognizer 未注册滑动

objective-c - 获取有关拥有事件窗口的应用程序的信息

c - 为什么我不能在 C 中使用函数参数作为数组大小?

c - 浮点转换假设 : (int)(float)n == n

iphone - 带有从互联网下载的声音的本地通知 - iPhone

objective-c - 转换国际键盘的 CGKeyCode

c - malloc 后堆中断不会改变

c++ - ASM 堆栈使用