2012-02-01 3 views
0

Я хочу, чтобы добавить объекты в NSArray и получить к ним доступ с помощью ключей. В настоящее время способ, которым это делается, заключается в создании отдельного NSDictionary пар ключ-значение, где значение представляет собой целое число, представляющее индекс в моем NSArray. Это кажется мне дополнительным шагом.Доступ к массиву/набору объектов с ключами

Если мое понимание NSDictionary верное, могут быть сохранены только «значения»: указатель на объект не может.

Несомненно, должна существовать эквивалентная функция типа NSDictionary, позволяющая хранить и осуществлять доступ к объектам с помощью ключа? Я просмотрел документацию, но, похоже, не нахожу ответов, если им не хватает чего-то очевидного.

+0

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

+0

Ах, чувствуя себя довольно глупо сейчас. В моем коде произошла ошибка, я передавал ноль объекту словаря, который, как я думал, должен был быть UIView.Чтобы подтвердить, объекты могут быть использованы - * смущен * –

ответ

1

NSDictionary должен хранить пары значений ключа. если вы добавляете пару ключевых значений после создания dictioanry, используйте класс NSMutableDictionary. Например,

[dictionaryObject setObject:@"" forKey:@"abc"]; 
0

Это неправильно, вы можете хранить объекты в NSDictionary. Посмотрите на метод dictionaryWithObjects:forKeys: или dictionaryWithObjectsAndKeys:

+0

Да, я посмотрел на них. Но они не работали (если только я не делал что-то глупое). Я пытался добавить объект UIView в словарь. Попробуем еще раз ... –

+0

если вы разместите код и ошибку, это может помочь. Вы можете определенно добавить объекты с помощью этих методов. – wattson12

+0

Im не у моего разработчика mac atm. Один из приведенных выше ответов заставлял меня думать, что, возможно, это изменчивая/непреложная вещь, которая меня пугает. У нас будет другой взгляд сегодня вечером. –

1

Вы можете хранить объекты в NSDictionary и могут быть доступны через keys ...

1

Короче говоря, нет.

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

Вы понимаете, что коллекции, вероятно, неверны, вы не храните значения, а указатели (ссылки).

Дополнительный шаг необходим, если вам нужно сохранить ссылки в массиве, но в этом случае вам следует использовать словарь. Опция заключается в том, чтобы использовать ключи, которые заботятся о заказе.
Например:

[myDictionary objectForKey:@"1"]; 

может быть эквивалентом:

[myArray objectAtIndex:1]; 
0

У меня нет никакого опыта в какао, но глядя на документацию, кажется, как NSDictionary (или, по крайней мере, NSMutableDictionary) должен обработать запрос (без использования NSArray).

0

Я думаю, что я понимаю вашу проблему. Мое предложение для Вас, чтобы использовать NSMutableArray и макросы, например:

NSMutableArray *array=[[NSMutableArray alloc]init]; 
#define SOME_MACRO 0 
    id someObject; 
    [array insertObject:someObject atIndex:SOME_MACRO]; 
    id getterObject=[array objectAtIndex:SOME_MACRO]; 


Конечно определить макросы в файле заголовка.

+0

Добро пожаловать в переполнение стека. [Пожалуйста, не используйте подпись в своих сообщениях] (http://stackoverflow.com/faq#signatures) (программное обеспечение автоматически добавляет ее). – Gilles

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