2017-02-10 3 views
0

Мое приложение следует схеме web (json) -> appDelegate (Core Data) -> ViewController. Пока я вижу места, которые я получил от сериализованного json, и все другие новые, которые я вводил для тестирования. Но теперь я пытаюсь отобразить их в виде таблицы, и пока это не работает. Таблица остается пустым, хотя я знаю, что места находятся в Core Data: Вот код:IOS/Objective-C: невозможно отобразить информацию о данных ядра

#import "TableTableViewController.h" 
#import "DetailViewController.h" 
#import <CoreData/CoreData.h> 
#import "Spot.h" 
#import "AppDelegate.h" 




@interface TableViewController() 

@property (strong) NSMutableArray *locations; 

@end 

@implementation TableViewController 

- (NSManagedObjectContext *)managedObjectContext 
{ 
    NSManagedObjectContext *context = nil; 
    id delegate = [[UIApplication sharedApplication] delegate]; 
    if ([delegate respondsToSelector:@selector(managedObjectContext)]){ 
     context = [delegate managedObjectContext]; 
    } 
    return context; 
} 


- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Spot"]; 
    self.locations = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy]; 

    [self.tableView reloadData]; 

    } 

#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 

    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 


    return self.locations.count; 

} 


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

    NSManagedObject *ls = [self.locations objectAtIndex:indexPath.row]; 
    [cell.textLabel setText:[NSString stringWithFormat:@"%@", [ls valueForKey:@"name"]]]; 


    return cell; 
} 

Может кто-нибудь сказать мне, что я делаю неправильно?

UPDATE: Если я зарегистрирую местоположения-> NSLog (@ "% @ местоположения", _locations); Я получаю нулевой результат. Это означает, что извлеченные данные не заполняют массив, поэтому таблица остается пустой, не так ли? Но почему массив не заселен?

+0

Мне нужно проверить, не заполнена ли моя база данных? Как я могу это сделать? – FuManchu

+1

Для проверки работоспособности я поставил точку останова в методе numberOfRowsInSection, чтобы убедиться, что она вызвана, а затем, если она попадет, распечатайте результат self.locations.count и убедитесь, что это не 0 Если эта точка прерывания и счетчик больше 0, то у вас есть данные. – ghostatron

+0

Вы пробовали предложения @ conarch? –

ответ

0

Проверьте, что ваш self.tableView.dataSource не равен нулю

+0

Прошу прощения, но я не получаю его – FuManchu

+0

- (void) viewDidLoad { [super viewDidLoad]; self.tableView.dataSource = self; // добавить это – vaddieg

+0

нет, он остается пустым ... – FuManchu

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