如何在 UITableView 中显示 Core Data 的数据
Posted
技术标签:
【中文标题】如何在 UITableView 中显示 Core Data 的数据【英文标题】:How to show the data of Core Data in a UITableView 【发布时间】:2014-09-16 07:01:14 【问题描述】:我从 JSON 获取响应并使用 Core Data 存储该数据。我想始终在UITableView
中显示数据。你能建议我如何在UITableView
中显示数据吗?
这是我正在使用的代码。
NSManagedObject * newEntry =[[NSManagedObject alloc]initWithEntity:entityDesc insertIntoManagedObjectContext:self.managedObjectContext];
[newEntry setValue:[dict objectForKey:@"albumName"] forKey:@"albumName"];
[newEntry setValue:[dict objectForKey:@"coverPhotoURL"] forKey:@"coverPhotoURL"];
[newEntry setValue:[dict objectForKey:@"createdDate"] forKey:@"createdDate"];
NSLog(@"Log %@", newEntry);
NSError * error = nil;
if ([self.managedObjectContext save:&error] == NO)
NSLog(@"CANNOT SAVE: %@ %@", error, [error localizedDescription]);
else
NSLog(@"SUCCES, go check the sqlite file");
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"GetAlbums"
inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSError* error;
NSArray *fetchedRecords = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
NSLog(@"Fetch Records %@",fetchedRecords);
【问题讨论】:
你知道UITableViewController
s怎么用吗?
你知道tableView
您已经有了获取的记录数组,然后在表格视图中显示它们。 - 你的问题是关于如何从数组中提取元素?
我只写了这个 [self.tableView reloadData];
这篇教程你看过了吗:appcoda.com/uitableview-tutorial-storyboard-xcode5
【参考方案1】:
即使按照walle84 的建议,您可以实现UITableViewDelegate
的方法在表格视图中显示数据,正确的方法是使用UITableView
和NSFetchedResultsController
。正如文档中所写,后者是使用的
有效地管理从 Core Data 获取请求返回的结果,以便为 UITableView 对象提供数据。
我把重点放在高效上,因为它提供了很多优点。例如,它允许延迟加载数据,它允许跟踪特定实体的更改(实现NSFetchedResultsControllerDelegate
)等等。
从哪里开始?有很多啧啧。只需用谷歌搜索它们,您就会找到一个很好的起点。
Core Data From Scratch How To Use NSFetchedResultsController【讨论】:
【参考方案2】:您使用以下表格视图方法来显示您的数据。
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return [self.arrayOfyourData count];
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
return 1;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *cellIdentifier = @"CellIdentifier";
//you could use default cell or ur own custom cell.
cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
// Now here you could pare your self.arrayOfyourData to fetch and populate your cell.
return cell;
【讨论】:
以上是关于如何在 UITableView 中显示 Core Data 的数据的主要内容,如果未能解决你的问题,请参考以下文章
如何根据 Core Data 中的关系对象创建 UITableView 部分
如何切换到将 Core Data 用于简单的 UITableView 而不是 NSArray?
Cocoa Touch 从 Core Data 更新 UITableView
Swift UITableView 删除行项 - tableview 数据源是 Core Data