Вызов метода класса из другого класса? - PullRequest
1 голос
/ 23 марта 2012

Я понимаю, что этот вопрос довольно простой, но я действительно застрял. У меня есть список. Я пытаюсь прочитать это в массив, чтобы я мог работать с ним в различных классах. Итак, в одном классе у меня есть:

+ (NSArray*)questionArray
{
static NSArray* questions = nil;

if(!questions)
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Questions" ofType:@"plist"];
    NSDictionary *dic = [[NSDictionary alloc] initWithContentsOfFile:path];
    NSArray *questionsArray = [dic objectForKey:@"groups"];
    NSMutableArray *questionObjects = [[NSMutableArray alloc] initWithCapacity:     [questionsArray count]]; 

    for(NSDictionary* questionDic in questionsArray)
    {
        QuestionContainerObject* object = [[self alloc] initWithDictionary:questionDic];

        [questionObjects addObject:object];
        [object release];
    }

    questions = questionObjects;

    [dic release];
}

return questions;
}

Я хочу иметь доступ к вещам, которые я извлекаю из массива из другого класса. Я попытался вызвать его как NSString *str = [QuestionContainerObject questionArray]; из моего другого класса (после импорта заголовка), но я получил предупреждение «метод класса + questionArray not found».

Может кто-нибудь указать мне правильное направление? Я действительно потерян! Спасибо !!

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

Предупреждение связано с тем, что компилятор не знает, что метод questionArray существует. определить этот метод в заголовке (QuestionContainerObject.h)

@interface QuestionContainerObject
+ (NSArray*)questionArray;
@end

и в файле, использующем его:

#import QuestionContainerObject.h

Также не забудьте освободить объекты, созданные с помощью [class alloc]

0 голосов
/ 23 марта 2012

Вы поместили объявление метода класса в заголовочный файл?

Кстати, переместите static NSArray* questions = nil; за пределы тела метода и удалите = nil, иначе он не даст желаемого эффекта, я думаю.

...