2017-02-10 16 views
0

私のアプリはスキームweb(json) - > appDelegate(Core Data) - > ViewControllerに従います。これまでのところ、シリアル化されたjsonから取得した場所と、テスト用に入力したすべての新しい場所を確認できます。しかし、今私はそれらをテーブルビューで表示しようとしています、そして、これまでは動作していません。ここで、コードは次のとおりです:テーブルには、私は場所がコアデータである知っているが、空のまま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(@ "%@場所は"、_位置)です。私はヌルの結果を得る。つまり、フェッチされたデータが配列にデータを格納していないため、テーブルは空のままです。しかし、なぜ配列に値が設定されていないのですか?

+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

関連する問題