2012-04-02 3 views
0

В Ruby у нас есть символы для использования для ключа хэшей. Я пытаюсь перенести библиотеку Ruby в Objective-C, а в библиотеке есть хэш, в котором используются символы в виде ключей. Есть ли аналогичная душа для Objective-C? Или я должен использовать NSString?Objective-C Эквивалент символов Ruby

+0

Objective-C - это супер-набор C, поэтому вы можете использовать константы '# define' для достижения аналогичного результата. – Sahand

+0

вызовите to_s на всех символах, и у вас есть строки, доступные для использования в качестве ваших ключей (символы являются изменяемыми строками) – bjhaid

+0

Я, m, говорим о символах в Objective-C, а не Ruby. – Linuxios

ответ

0

NSDictionary ключей в Objective-C обычно NSString s. Вероятно, это путь сюда.

Вам не нужно беспокоиться о строковых литералах Ruby и символах; просто создайте NSString со строковым значением для ключа или используйте строку @"my key name", если требуется.

+0

Ответ @benalpert - лучший ответ. Использование символа является идиоматическим в Ruby, потому что они неизменяемы и создаются только один раз. В Objective-C указатель const на строку является эквивалентом, который вы хотите использовать. –

2

Я видел заявления, как

extern NSString *const NSKeyValueChangeNewKey = @"NSKeyValueChangeNewKey"; 

, так что вы можете использовать его в качестве ключа:

[dict objectForKey:NSKeyValueChangeNewKey]; 

Для объяснения, что это немного более подробно, см Constants in Objective-C.

+0

Поиск 'NSKeyValueChangeNewKey' – hrnt

+0

Спасибо, только что нашел хороший ответ SO, объясняющий это. –

+0

Для записи: Пожалуйста, не префикс ваших констант с «NS» - это префикс от Apple. – Chuck

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