Мое приложение следует схеме 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); Я получаю нулевой результат. Это означает, что извлеченные данные не заполняют массив, поэтому таблица остается пустой, не так ли? Но почему массив не заселен?
Мне нужно проверить, не заполнена ли моя база данных? Как я могу это сделать? – FuManchu
Для проверки работоспособности я поставил точку останова в методе numberOfRowsInSection, чтобы убедиться, что она вызвана, а затем, если она попадет, распечатайте результат self.locations.count и убедитесь, что это не 0 Если эта точка прерывания и счетчик больше 0, то у вас есть данные. – ghostatron
Вы пробовали предложения @ conarch? –