我有一个简单的程序,它是一个调用 ModalViewController 的 TableViewController,用户将一些文本添加到文本字段中,单击保存并将其添加回 TableViewController。
我正在尝试滑动以删除行,当我这样做时,值更改为“NULL”并且该行仍然存在。如果我重新启动应用程序或转到另一个视图控制器并再次返回,则该行将消失。
我的代码如下所示:
@interface NewTimelineViewController () <UITableViewDataSource, UITableViewDelegate>
@property (strong) NSMutableArray *transactions;
@end
@implementation NewTimelineViewController
@synthesize transactions = _transactions;
- (NSManagedObjectContext *)managedObjectContext
{
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication]delegate];
if ([delegate performSelector:@selector(managedObjectContext)])
{
context = [delegate managedObjectContext];
}
return context;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.transactions.count;
}
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
[self.managedObjectContext deleteObject:[self.transactions objectAtIndex:indexPath.row]];
NSError *error = nil;
if (![self.managedObjectContext save:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
//abort();
//[self.tableView reloadData];
}
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Persons";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSManagedObject *transaction = [self.transactions objectAtIndex:indexPath.row];
[cell.textLabel setText:[NSString stringWithFormat:@"%@ %@", [transaction valueForKeyPath:@"whoBy.name"], [transaction valueForKeyPath:@"gifting.amount"]]];
return cell;
}
我知道这很容易。对我来说,看起来实际的行在这个视图中没有被删除或重新加载,但是当这个 TableView 再次出现时,它就消失了。
任何帮助,将不胜感激!