我意识到这个问题非常基本,但我真的被卡住了。我有一个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'警告。
有人可以指出我正确的方向吗?我真的输了!谢谢!
答案 0 :(得分:2)
警告是因为编译器不知道questionArray方法存在。 在头文件中定义此方法(QuestionContainerObject.h)
@interface QuestionContainerObject
+ (NSArray*)questionArray;
@end
并在使用它的文件中:
#import QuestionContainerObject.h
还记得发布使用[class alloc]
创建的对象答案 1 :(得分:0)
您是否将类方法声明放在头文件中?
顺便说一下,将static NSArray* questions = nil;
移到方法体外,然后移除= nil
,否则我认为它不会产生你想要的效果。