我需要一个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];
答案 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的成员