私のアプリはスキーム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(@ "%@場所は"、_位置)です。私はヌルの結果を得る。つまり、フェッチされたデータが配列にデータを格納していないため、テーブルは空のままです。しかし、なぜ配列に値が設定されていないのですか?
自分のデータベースが空でないかどうかを確認する必要がありますか?どうやってやるの? – FuManchu
サニティチェックでは、numberOfRowsInSectionメソッドにブレークポイントを設定して呼び出されていることを確認し、ヒットした場合はself.locations.countの結果を出力し、0でないことを確認しますそのブレークポイントがトリップし、カウントが0より大きい場合は、データがあります。 – ghostatron
あなたは@ conarchの提案を試しましたか? –