2013-11-15 3 views
0

Я просматриваю Apple Start Developing Guide, и я обнаружил ошибку в демонстрационном приложении.iOS Novice - viewDidLoad

Код выглядит следующим образом:

#import "XYZToDoListViewController.h" 
#import "XYZToDoItem.h" 

@interface XYZToDoListViewController() 

@property NSMutableArray *toDoItems; 
-(void)viewDidLoad{ 
    [super viewDidLoad]; 
    self.toDoItems = [[NSMutableArray alloc]init]; 
    [self loadInitialData]; 
} 

@end 

@implementation XYZToDoListViewController 
-(void)loadInitialData{ 
    XYZToDoItem *item1 = [[XYZToDoItem alloc]init]; 
    item1.itemName = @"Buy Milk"; 
    [self.toDoItems addObject:item1]; 

    XYZToDoItem *item2 = [[XYZToDoItem alloc]init]; 
    item2.itemName = @"Go Shopping"; 
    [self.toDoItems addObject:item2]; 

    XYZToDoItem *item3 = [[XYZToDoItem alloc]init]; 
    item3.itemName = @"Wake Up"; 
    [self.toDoItems addObject:item3]; 
} 
- (IBAction)unwindToList:(UIStoryboardSegue *)segue 
{ 

} 


- (id)initWithStyle:(UITableViewStyle)style 
{ 
    self = [super initWithStyle:style]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Uncomment the following line to preserve selection between presentations. 
    // self.clearsSelectionOnViewWillAppear = NO; 

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
    // self.navigationItem.rightBarButtonItem = self.editButtonItem; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    return [self.toDoItems count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"ListPrototypeCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    // Configure the cell... 
    XYZToDoItem *toDoItem = [self.toDoItems objectAtIndex:indexPath.row]; 
    cell.textLabel.text = toDoItem.itemName; 
    return cell; 
} 

/* 
// Override to support conditional editing of the table view. 
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Return NO if you do not want the specified item to be editable. 
    return YES; 
} 
*/ 

/* 
// Override to support editing the table view. 
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
     // Delete the row from the data source 
     [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
    } 
    else if (editingStyle == UITableViewCellEditingStyleInsert) { 
     // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 
    } 
} 
*/ 

/* 
// Override to support rearranging the table view. 
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath 
{ 
} 
*/ 

/* 
// Override to support conditional rearranging of the table view. 
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Return NO if you do not want the item to be re-orderable. 
    return YES; 
} 
*/ 

/* 
#pragma mark - Navigation 

// In a story board-based application, you will often want to do a little preparation before navigation 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    // Get the new view controller using [segue destinationViewController]. 
    // Pass the selected object to the new view controller. 
} 

*/ 
#pragma mark - Table view delegate 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

} 
@end 

На стройке это приходит с ошибкой, говоря, что ожидается ; после viewDidLoad. У меня есть googled это, чтобы посмотреть, могу ли я понять, почему, но не может показаться.

+2

Вы поместили этот код в заголовочный файл (* .h)? –

+0

Вы должны написать свой метод '-viewDidLoad' в файле' .m'. – Bhavin

+0

Это было в .m файле –

ответ

0

Похоже, что вы могли бы иметь либо свойство:

@property NSMutableArray *toDoItems; 

В файле реализации (.m) или метод:

-(void)viewDidLoad{ 
    ... 
} 

В файле заголовка (.h).

Кроме того, вам понадобится @implementation или @interface. Возможно, вам следует обновить свой вопрос с полным кодом из файла.

6

это в вашем файле .h

@interface className : Class that you inherit 

@property NSMutableArray *toDoItems; 

@end 

конечно, вам нужно заменить Classname с вашим именем для класса, а «класс, который вы унаследовали» с супер классов, таких как NSObject , UIViewController, UIView или любой другой класс.

и это в вашем .m файл

@implementation className 

-(void)viewDidLoad{ 
    [super viewDidLoad]; 
    self.toDoItems = [[NSMutableArray alloc]init]; 
    [self loadInitialData]; 
} 

@end 

, который должен помочь.

Надеется, что это помогает :)

0

Ниже свойство должно быть в .h файла. Поскольку в файле .h мы должны объявить метод так, свойство объявит метод, который должен быть в файле .h

@property NSMutableArray *toDoItems; 

И ниже будет .m файл, поскольку в .m файла необходимо определить метод ,

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

self.toDoItems = [[NSMutableArray alloc] init]; 
    [self loadInitialData]; 
    } 
+0

@downvoter, пожалуйста, дайте свои комментарии, прежде чем давать downvote ?? –

Смежные вопросы