我按照教程的说明进行操作,但我无法弄清楚出了什么问题。我仔细检查了一切。我将编译器错误放在下面的代码注释中。对不起,这可能会显示我有多少菜鸟。
// main.m
#import <Foundation/Foundation.h>
#import "LotteryEntry.h"
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
// Creates the date object
NSCalendarDate *now = [[NSCalendarDate alloc]init];
//Seed the random number generator
srandom(time(NULL));
NSMutableArray * array;
array = [[NSMutableArray alloc]init];
int i;
for (i = 0; i < 10; i++) {
//create a date/time object that is 'i' weeks from now
NSCalendarDate *iWeeksFromNow;
iWeeksFromNow = [now dateByAddingYears:0
months:0
days:(i * 7)
hours:0
minutes:0
second:0];
}
//create the LotteryEntry object
LotteryEntry *newEntry = [[LotteryEntry alloc]init];
[newEntry prepareRandomNumbers];
[newEntry setEntryDate: iWeeksFromNow];
//Error says "Use of undeclared identifier "iWeeksFromNow'. Did I not declare it above?
//add the lottery entry object to the array
[array addObject:newEntry];
}
for (LotteryEntry *entryToPrint in array) {
//Error says " Expected identifier or '('
//Display it's contents
NSLog(@"%@", entryToPrint);
}
[pool drain];
return 0;
//Error says " Expected identifier or '('
}
//Error says " Expected External declaration
答案 0 :(得分:2)
你在for循环中声明iWeeksFromNow,这就是为什么编译器不认为它存在于外部 将其声明为外部,并在
中为其指定值答案 1 :(得分:1)
当你调用-dateByAddingYears方法时,你有一个额外的结束}
。
答案 2 :(得分:1)
第一个错误:你在for循环中声明iWeeksFromNew,因此它无法从外部访问。 你必须在循环开始之前声明。
第二个错误:[array addObject:newEntry];
之后你有一个括号'}',所以编译器认为你的方法结束了,删除它。
这应该可以解决您的所有其他错误
答案 3 :(得分:0)
首先,iWeeksFromNow
在for
循环的范围内声明,因此它只在该循环中可见。其次,正如Black Frog所指出的,你有一个额外的右括号。
答案 4 :(得分:0)
将声明移出循环块。你在这里遇到了一个范围问题:iWeeksFromNew只存在于循环中
NSCalendarDate *iWeeksFromNow;
int i;
for (i = 0; i < 10; i++) {
//create a date/time object that is 'i' weeks from now
iWeeksFromNow = [now dateByAddingYears:0
months:0
days:(i * 7)
hours:0
minutes:0
second:0];
}