2016-09-21 2 views
0

Я довольно новичок в Objective-C, и я нахожу, что есть много учебных пособий для iOS и UITableView, но почти нет для OS X Apps через NSTableView. Я создал метод для извлечения своих данных, но в последней строке я получаю сообщение об ошибке:Как перезагрузить данные в NSTableView?

«Свойство tableView не найдено по типу объекта ProductViewController».

Я не знаю, как правильно перезагрузить мои данные в таблицу или мне даже нужно использовать NSTableView для этого конкретного экземпляра? Есть ли лучший способ отображения моих данных, чем использование NSTableView?

#import "ProductsViewController.h" 
#import "Product.h" 

#define getDataURL @"http://myurl" 


@interface ProductsViewController() 

@end 

@implementation ProductsViewController 

@synthesize jsonArray, productsArray; 

- (void)viewDidLoad { 
[super viewDidLoad]; 



[self retrieveData]; 



} 

-(NSInteger)numberOfRowsInTable:(NSTableView *)tableView{ 

return productsArray.count; 
} 

- (void) retrieveData{ 

NSURL * url = [NSURL URLWithString:getDataURL]; 
NSData * data = [NSData dataWithContentsOfURL:url]; 

jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 

productsArray = [[NSMutableArray alloc] init]; 


for(int i = 0; i < jsonArray.count; i++){ 

    NSString * pID   = [[jsonArray objectAtIndex:i] objectForKey:@"id"]; 
    NSString * pName  = [[jsonArray objectAtIndex:i] objectForKey:@"product_name"]; 
    NSString * pPrice  = [[jsonArray objectAtIndex:i] objectForKey:@"product_price"]; 
    NSString * pDescription = [[jsonArray objectAtIndex:i] objectForKey:@"product_description"]; 
    NSString * pImage  = [[jsonArray objectAtIndex:i] objectForKey:@"product_image"]; 
    NSString * pDownload = [[jsonArray objectAtIndex:i] objectForKey:@"product_download"]; 
    NSString * pVideo  = [[jsonArray objectAtIndex:i] objectForKey:@"product_video"]; 
    NSString * pFeatured = [[jsonArray objectAtIndex:i] objectForKey:@"featured"]; 


    [productsArray addObject:[[Product alloc] initWithProduct_Name: pName andProduct_Price:pPrice andProduct_Description:pDescription andProduct_Image:pImage andProduct_Download:pDownload andProduct_Video:pVideo andProduct_Featured:pFeatured andProduct_ID:pID]]; 
} 

[self.tableView reloadData]; 


} 
+0

Конечно, вам нужно «NSTableView» и еще несколько методов источника данных/делегата или привязки какао. – vadian

ответ

1

Вы должны реализовать необходимые методы делегата для протокола NSTableViewDataSource. В частности, вам нужны эти два:

numberOfRowsInTableView: 
tableView:objectValueForTableColumn:row: 

Вид таблицы затем вызовет эти методы для данных, которые он хочет.

Кроме того, на сайте raywenderlich.com есть a great tutorial об использовании NSTableViews.

+0

Thats perfect. Спасибо огромное! –

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