NSDictionary Objective-C - PullRequest
       19

NSDictionary Objective-C

3 голосов
/ 26 мая 2009

Я пытаюсь сохранить данные следующим образом со строкой в ​​качестве ключа, и я хотел бы массив в качестве значения.

ключевые объекты

"буквы" {'a', 'b', 'c', 'd'}
"числа" {1,2,3,4,5,6,7}

Возможно ли это с NSDictionary в коде? Если так, то как это будет выглядеть? Я действительно запутался в этом.

Ответы [ 3 ]

16 голосов
/ 26 мая 2009

Простой способ сделать это в коде (и только один из нескольких способов сделать это):

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSArray arrayWithObjects:@"a", @"b", @"c", @"d", nil] forKey:@"letters"];
[dict setObject:[NSArray arrayWithObjects:[NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], [NSNumber numberWithInt:4], nil] forKey:@"numbers"];

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

По комментариям ниже:

Если вы хотите добавлять элементы в массивы по одному ...

  // create the dictionary and add the letters and numbers mutable arrays
  NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  NSMutableArray *letters = [NSMutableArray array];
  NSMutableArray *numbers = [NSMutableArray array];
  [dict setObject:letters forKey:@"letters"];
  [dict setObject:numbers forKey:@"numbers"];

  // add a letter and add a number
  [[dict objectForKey:@"letters"] addObject:@"a"];
  [[dict objectForKey:@"numbers"] addObject:[NSNumber numberWithInt:1]];  
  // This now has an NSDictionary (hash) with two arrays, one of letters and one 
  // of numbers with the letter 'a' in the letters array and the number 1 in 
  // the numbers array
6 голосов
/ 26 мая 2009

Если у вас есть NSArray с именем letters и один с именем numbers, содержащие правильные значения:

NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:
    letters, @"letters",
    numbers, @"numbers",
    nil
];

Обязательно наберите retain, если хотите сохранить dict, или используйте alloc и initWithObjectsAndKeys.

Подробнее см. NSDictionary API.

2 голосов
/ 26 мая 2009

Вы можете представлять их как списки свойств. Документация по списку свойств .

<dict>
    <key>letters</key>
    <array>
        <string>a</string>
        <string>b</string>
        <string>c</string>
        <string>d</string>
    </array>
    <key>letters</key>
    <array>
        <integer>1</integer>
        <integer>2</integer>
        <integer>3</integer>
        <integer>4</integer>
        <integer>5</integer>
        <integer>6</integer>
        <integer>7</integer>
    </array>
 </dict>

Обзор способов сериализации и десериализации ваших данных в какао см. В Руководство по архивированию и сериализации для какао

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...