表视图控制器不显示更新的核心数据值

Posted

技术标签:

【中文标题】表视图控制器不显示更新的核心数据值【英文标题】:Table View Controller doesn't show updated core data values 【发布时间】:2014-04-15 20:00:49 【问题描述】:

使用 TVC 和核心数据 tableview 控制器从头开始。 我已经在 viewdidload 中实现了拉动刷新。问题是当我使用 sqllite 更新核心数据时,即使我调用[self.tableView reloadData];

,数据也不会更新

我的 MasterViewController.h:

#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>

@interface MasterViewController : UITableViewController <NSFetchedResultsControllerDelegate>
@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;

@end

还有我的 MasterViewController.m(来自 Apple 模板):

#import "MasterViewController.h"

@interface MasterViewController ()
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath;
@end

@implementation MasterViewController

- (void)viewDidLoad

    [super viewDidLoad];
    self.navigationItem.leftBarButtonItem = self.editButtonItem;

    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)];
    self.navigationItem.rightBarButtonItem = addButton;

    // Initialize Refresh Control
    UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];

    // Configure Refresh Control
    [refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];

    // Configure View Controller
    [self setRefreshControl:refreshControl];


- (void)refresh:(id)sender 

    NSLog(@"Refreshing View ...");

    // End Refreshing
    [(UIRefreshControl *)sender endRefreshing];

    [self.tableView reloadData];


感谢您的帮助!!

【问题讨论】:

行 NSLog(@"Refreshing View...");被叫?如果是这样,我认为我们将需要您的 cellForRowAtIndexPathMethod 来提供答案。 是的,它被称为。忘记在刷新过程中添加提取! 【参考方案1】:

我没有看到任何更新数据的代码部分。

您在 UITableView 上调用“reloadData”这一事实不会获取任何新数据,它只会再次调用您实现的数据源协议调用(numberOfSectionsInTableView、numberOfRowsInSection、cellForRowAtIndexPath 等)。所以当拉动刷新控件时,获取新数据,然后调用“reloadData”。

【讨论】:

实际上,我没有看到任何获取。在刷新过程中添加[NSFetchedResultsController deleteCacheWithName:nil]; NSError *error = nil; [self.fetchedResultsController performFetch:&amp;error]; 就像一个魅力

以上是关于表视图控制器不显示更新的核心数据值的主要内容,如果未能解决你的问题,请参考以下文章

在不使用表视图的情况下更新核心数据属性

核心数据 - 保存和检索属性 - 示例代码

如何将核心数据信息从表视图传递到视图控制器?

如何在第二个视图控制器上显示核心数据?

删除子视图中的核心数据后更新表视图

如何更新托管对象数据?