NSDictionary with key =>字符串和值=> c风格的数组

时间:2010-04-17 06:44:27

标签: iphone objective-c nsdictionary

我需要一个NSDictionary,其中包含字符串形式的键(@"key1", @"key2")和值为C风格的二维数组(valueArray1,valueArray2)的形式,其中valueArray1是定义为:

int valueArray1[8][3] = { {25,10,65},{50,30,75},{60,45,80},{75,60,10},
                          {10,70,80},{90,30,80},{20,15,90},{20,20,15} };

对于valueArray2也一样。

我的目标是获得一个NSString,我需要获取相应的二维数组。 我想使用NSArray,而不是c风格的数组,将工作,但我不能像上面所做的那样初始化数组(我有很多这样的数组)。但是,如果这是可行的,请告诉我如何。

目前,以下是警告“从不兼容的指针类型传递'dictionaryWithObjectsAndKeys:'的参数1”:

NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:valueArray1,@"key1",
                    valueArray2,@"key2",nil];

2 个答案:

答案 0 :(得分:2)

valueArray2也是int[][3]吗?如果是这样,你可以使用

[NSValue valueWithPointer:valueArray1]

将数组转换为ObjC值。要检索内容,您需要使用

void* valuePtr = [[myDict objectForKey:@"key1"] pointerValue];
int(*valueArr)[3] = valuePtr;
// use valueArr as valueArrayX.

如果只有2个键,使用像

这样的功能会更有效
int(*getMyValueArr(NSString* key))[3] {
    if ([key isEqualToString:@"key1"]) return valueArray1;
    else return valueArray2;
}

答案 1 :(得分:0)

而不是直接添加数组作为NSDictionary中的值,而是创建一个自定义类,其中创建NSArray的变量...并将此类对象设置为值,如

NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:MyClassObj1,@"key1",
                    MyClassObj2,@"key2",nil];

其中MyClassObj1和MyClassObj2是MyClass的成员