2010-04-17 1 views
2

Мне нужен NSDictionary, который имеет ключ в форме строки (@"key1", @"key2") и значение в виде двумерного массива C-стиля (valueArray1,valueArray2), где valueArray1 определяется как:NSDictionary с ключом => Строка и значение => массив c-Style

 
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-style будет работать, но тогда я не могу инициализировать массивы, как было сделано выше (у меня много таких массивов). Если, однако, это выполнимо, пожалуйста, дайте мне знать, как это сделать.

В настоящее время следующее дает предупреждение «Передача аргумента 1 из„dictionaryWithObjectsAndKeys:“от несовместимого типа указателя»:

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

ответ

2

ли valueArr ay2 также 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; 
} 
0

Вместо того, чтобы добавить массив непосредственно в качестве значения в NSDictionary сделать пользовательский класс, в котором создать переменную из NSArray ... и установить этот объект класса в качестве значения как

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

где MyClassObj1 и MyClassObj2 являются членом MyClass

 Смежные вопросы

  • Нет связанных вопросов^_^