Вы можете создать класс, содержащий массив другого класса в цели c? - PullRequest
0 голосов
/ 09 января 2012

Я пытаюсь прототипировать некоторые вещи, используя XCode4, но я очень плохо знаком с ObjectiveC.Вот проблема.В Java я бы использовал что-то подобное для определения объекта, который я хочу использовать:

public class Event(){
String EventID;
String EventName;
ArrayList<EventTag> Tags;

}

Так что «EventTag» - это другой класс, и у Event может быть один или несколько EventTag.Таким образом, мой объект имеет все, что мне нужно, когда я ссылаюсь на него.Есть ли эквивалентный способ сделать это в Objective C?Или есть лучший способ, что я хочу?

Спасибо

Ответы [ 3 ]

3 голосов
/ 09 января 2012

Объявление эквивалентного класса в Objective-c будет выглядеть следующим образом:

@interface Event:NSObject{
   NSString *eventID;
   NSString *eventName;
   NSMutableArray *tags;
}

Обратите внимание, что в именах экземпляров стиля образца в объекте-c имена переменных должны начинаться со строчной буквы.Также, если вас не интересует какой-либо конкретный порядок тегов, вы можете использовать NSMutableSet вместо массива.

Также проверьте раздел properties в ссылке Objective-C, чтобы увидеть объект-c способ создания методов доступа к переменным экземпляра.

1 голос
/ 09 января 2012

В вашем примере у вас будет список, который может поддерживать только объекты EventTag, и компилятор создаст предупреждение / ошибку, если вы попытаетесь добавить что-то еще. Objective-C не поддерживает это, есть только «нетипизированные» массивы (NSArray для статических массивов и NSMutableArray для массивов, которые вы можете изменить), которые могут содержать любой объект Objective-C. Если вам нужен типизированный, вам нужно создать класс-оболочку.

1 голос
/ 09 января 2012

Вы бы просто использовали NSArray (или NSMutableArray, если хотите добавить / удалить элементы из массива). В Objective-C с Foundation (то есть семейством классов NS) нет способа иметь контейнер и указывать, что он содержит только определенный тип. Все контейнеры содержат любой объект (то есть что-то типа id).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...