Xcode中的未知错误

时间:2011-04-06 18:46:51

标签: objective-c xcode macos

我按照教程的说明进行操作,但我无法弄清楚出了什么问题。我仔细检查了一切。我将编译器错误放在下面的代码注释中。对不起,这可能会显示我有多少菜鸟。

//  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

5 个答案:

答案 0 :(得分:2)

你在for循环中声明iWeeksFromNow,这就是为什么编译器不认为它存在于外部 将其声明为外部,并在

中为其指定值

答案 1 :(得分:1)

当你调用-dateByAddingYears方法时,你有一个额外的结束}

答案 2 :(得分:1)

第一个错误:你在for循环中声明iWeeksFromNew,因此它无法从外部访问。 你必须在循环开始之前声明。

第二个错误:[array addObject:newEntry];之后你有一个括号'}',所以编译器认为你的方法结束了,删除它。

这应该可以解决您的所有其他错误

答案 3 :(得分:0)

首先,iWeeksFromNowfor循环的范围内声明,因此它只在该循环中可见。其次,正如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];
}