2017-02-10 1 views
0

Meine App folgt dem Schema Web (JSON) -> AppDelegate (Core Data) -> ViewController. Bis jetzt kann ich die Standorte sehen, die ich von serialisiertem json und allen anderen neuen bekommen habe, die ich für das Testen eingegeben habe. Aber jetzt versuche ich, sie in einer Tabellenansicht anzuzeigen, und bis jetzt funktioniert es nicht. Der Tisch bleibt leer, obwohl ich weiß, dass die Standorte in der Kerndaten sind: Hier ist der Code:IOS/Objective-C: kann keine Kerndateninformationen anzeigen

#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; 
} 

Kann mir jemand sagen, was mache ich falsch?

UPDATE: Wenn ich die Standorte-> NSLog anmelden (@ "% @ die Standorte sind", _locations); Ich bekomme ein Nullresultat. Dies bedeutet, dass die abgerufenen Daten das Array nicht füllen, daher bleibt die Tabelle leer, oder? Aber warum wird das Array nicht gefüllt?

+0

Ich muss überprüfen, ob meine Datenbank nicht leer ist? Wie kann ich das machen? – FuManchu

+1

Für eine Plausibilitätsprüfung würde ich einen Breakpoint in die numberOfRowsInSection -Methode setzen, um sicherzustellen, dass sie aufgerufen wird, und dann, wenn sie getroffen wird, das Ergebnis von self.locations.count ausdrucken und sicherstellen, dass es nicht 0 ist Wenn dieser Haltepunkt ausgelöst wird und die Anzahl größer als 0 ist, haben Sie Daten. – ghostatron

+0

Haben Sie die Vorschläge von @ conarch probiert? –

Antwort

0

Überprüfen Sie, ob Ihr self.tableView.dataSource nicht nil

+0

Es tut mir leid, aber ich bekomme es nicht – FuManchu

+0

- (void) viewDidLoad { [Super ViewDidLoad]; self.tableView.dataSource = self; // füge dieses – vaddieg

+0

hinzu Nein, es bleibt leer ... – FuManchu