Вложение массивов в объект NSDictionary (Objective-C)

Я хотел бы определять задачи с помощью NSDictionary, которые я хотел бы сохранить в файле plist (пока мне не повезло с Core Data), но застрял в двух точках:

- При использовании initWithObjectsAndKeys: я могу изменить тип данных на числовой или логический, используя методы NSDate numberWithInt: и numberWithBool: соответственно. Однако я не могу найти способ изменить тип на сегодняшний день. Ничего подобного в документации найти не удалось.

- Вторая проблема, с которой я столкнулся, была с вложенными массивами. Как мне добавить их в словарь?

Я загрузил сюда картинку того, чего я пытаюсь достичь. Заранее спасибо!


person antalkerekes    schedule 03.01.2011    source источник


Ответы (3)


Вы имеете в виду методы +numberWithInt: и +numberWithBool: NSNumber, а не NSDate? Эти методы определяет NSNumber.

Преобразование числа в дату действительно зависит от того, что это за число. Если это временная метка UNIX, тогда [NSDate dateWithTimeIntervalSince1970:theTimestampInSeconds].

Что касается добавления NSArray объектов в словарь:

[yourDictionary setObject:yourArray forKey:@"SomeKey"];

Вам нужно будет опубликовать код, если вам понадобится дополнительная помощь, поскольку ваш вопрос не очень ясен.

person d11wtq    schedule 03.01.2011
comment
Да, извините, я имел в виду NSNumber. Что касается вложенного массива, я попробовал его (снова?) Так, как вы предлагали, и это сработало! Раньше это не помогало. - person antalkerekes; 03.01.2011
comment
Если ваш массив раньше был равен нулю (например, когда вы еще не инициализировали его), вы получите ошибку времени выполнения, так как вы не можете сохранить ноль в словаре. Просто мысль. - person d11wtq; 03.01.2011

для даты вы также можете использовать numberWithInt: и timeIntervalSince1970 метод NSDate для получения отметки времени. Также есть конструктор для этой отметки времени.

Для вложенных массивов вы можете просто добавить объекты NSArray в словарь.

person Maffo    schedule 03.01.2011

Ваш plist должен выбрать формат даты и сохранить его с использованием типа Date, так что вы можете просто вставить NSDate.

[plist setObject:theDate forKey:@"theDateKey"];

Чтобы сохранить массив в свой словарь, используйте что-то вроде:

[NSDictionary dictionaryWithObjectsAndKeys:@"1", @"One", @"2", @"Two"];
person WrightsCS    schedule 03.01.2011
comment
Этот второй пример не является массивом и на самом деле выйдет из строя. - person Justin Spahr-Summers; 03.01.2011