从另一个类调用类方法?

时间:2012-03-23 00:53:09

标签: iphone objective-c ios class-method

我意识到这个问题非常基本,但我真的被卡住了。我有一个plist。我正在尝试将其读入数组,以便我可以在各种类中使用它。所以在一堂课中我有:

+ (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];(导入标题后)但我得到'class method + questionArray not found'警告。

有人可以指出我正确的方向吗?我真的输了!谢谢!

2 个答案:

答案 0 :(得分:2)

警告是因为编译器不知道questionArray方法存在。 在头文件中定义此方法(QuestionContainerObject.h)

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

并在使用它的文件中:

#import QuestionContainerObject.h

还记得发布使用[class alloc]

创建的对象

答案 1 :(得分:0)

您是否将类方法声明放在头文件中?

顺便说一下,将static NSArray* questions = nil;移到方法体外,然后移除= nil,否则我认为它不会产生你想要的效果。