Я новичок в Obj-C, поэтому простите меня, если это глупый вопрос:
Как я могу реализовать некоторые в стиле Javas перечислений? Или, если быть более точным:
Мне нужен класс с некоторыми известными свойствами, которые являются фиксированными во время компиляции и уникальными для каждого экземпляра. Кроме того, мне нужен только один тип экземпляра.
Позвольте мне привести пример в Java:
public enum MessageTypes {
DEFAULT("white", "standard", 1),
EXPRESS("red", "expressMessage", 2),
BORADCAST("green", "broadcast", 3);
String color; String tagName; int dbId;
MessageTypes(String color, String tagName, int dbId) {
// you get the idea
}
//some methonds like getEnumByTagName
}
Как бы вы сделали что-то подобное в Objective-C? Я что-то упускаю? Это плохой шаблон?
Спасибо заранее!
ИЗМЕНИТЬ: Прошу прощения, если бы я не поняла. Я знаю, что obj-c перечисления не то, что я ищу (поскольку они только немного больше, чем typedef для int).
Я хотел бы создать набор экземпляров определенного типа (однотипных, неизменяемых). Одноэлементный шаблон в Apples Dev-Docs бесполезен, так как я хочу, чтобы несколько разных экземпляров класса каждый с отдельными значениями в своих свойствах.
Цель состоит в том, чтобы иметь несколько типов сообщений (около 20), которые могут быть назначены для Message как свойство. Каждый из моих типов сообщений имеет (фиксированный и предопределенный) цвет, значение атрибута (в XML-представлении) и числовой идентификатор.
В Java я бы использовал перечисление, как в моем примере кода. Но как создать различные MessageTypes и связать их с их свойствами в Obj-C?
Создание 20 подклассов MessageType (каждый из которых имеет одноэлементный экземпляр, содержащий свойства), похоже, очень много работает для такой простой задачи и полного переполнения.
Мой текущий подход заключается в создании класса с NSArray, в котором хранятся разные экземпляры. При первом доступе к методу, подобному +(id)messageTypeForId:NSInteger id_
, NSArray предварительно заполняется. Но это кажется совершенно неуклюжим и вовсе не элегантным...
Есть ли более удовлетворительный подход?