Элемент словаря присутствует, но также отображается как (null)?

У меня есть определение вроде этого:

#define MessageType @"MessageType"

Это используется в коде с NSDictionary, называемым message :

NSLog(@"mesage...: %@", message);
NSLog(@"message type: %@", [message objectForKey:MessageType]);

Этот NSLog возвращает:

message...: {
1 = MessageType;
}
message type: (null)

Я не уверен, почему он возвращает его как (null), когда он, очевидно, является объектом. Это также не работает, если я использую свой исходный код:

if (!message objectForKey:type) {
return;
}

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

3
nl ja de

1 ответы

Ваш ключ 1 , а ваш объект MessageType .

You are checking otherway around!!! as [message objectForKey:MessageType]

Use #define MessageType @"1" or [message objectForKey:@"1"];

1
добавлено
Я не уверен, что ты прав. Мое определение так, что я могу использовать стандартизованное имя для ключа MessageType, а затем, если я решит изменить строку позже, мне не нужно менять ее в каждой области моего кода. А также, если я использую строку, мне не говорят, если я произнес это неправильно.
добавлено автор Andrew, источник
@AnoopVaidya Хм, я вижу. Благодарю. Итак, как я могу создать макрос, который затем могу использовать в качестве ключа во всем моем коде?
добавлено автор Andrew, источник
Но почему я хочу определить его как @ "1"? Это просто значение, которое оно вернуло, и это было правильное значение. Я не хочу, чтобы это возвращалось каждый раз. Я просто хочу заменить строку на ключ.
добавлено автор Andrew, источник
Ах, я обнаружил свою ошибку. В области кода, где я устанавливаю словарь, я помещаю MessageType в качестве объекта и 1 в качестве ключа.
добавлено автор Andrew, источник
NSLog показывает key-Value пары , не так ли? Таким образом, в вашем случае ключ равен 1, а значение - MessageType.
добавлено автор Anoop Vaidya, источник
@ H2CO3: Здесь вы приходите на мой ответ через месяц :)
добавлено автор Anoop Vaidya, источник
Я уже упоминал как: #define MessageType @ "1"
добавлено автор Anoop Vaidya, источник
Если вам нужна строка, то @ "1" в порядке.
добавлено автор Anoop Vaidya, источник
@Andrew: Точно :)
добавлено автор Anoop Vaidya, источник
@AnoopVaidya Ануоп Вайдя прав.
добавлено автор user529758, источник
@AnoopVaidya Или, возможно, #define MessageType @ (1) - мы не знаем, является ли ключ строкой, это может быть NSNumber . Описание NSDictionary не является полностью информативным.
добавлено автор user529758, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.