TableViewCell从左向右滑动并更改DataBase表(CoreData)中的内容

时间:2016-12-02 06:32:48

标签: ios objective-c iphone uitableview core-data

我是IOS的新手。抱歉我的一周英语,那个时候面临一个问题。我的问题是我在我的项目中使用CoreData。在我的项目中,TableViewCell从左向右滚动。滑动是正确的,但我想要刷过该单元格并更改数据库值。特定的indexpath.row是在DataBase表中滑动和相同的行内容更改。

通过SWTableViewCell This Tutorial

滑动TableViewCell
- (void)swipeableTableViewCell:(SWTableViewCell *)cell scrollingToState:(SWCellState)state{
if(state ==1){
 NSLog(@"animation start");
 }
else
NSLog(@"animation end");
 }

我试了很多天但是没有在TableViewCell刷卡的同一行中更新DataBase表,我该怎么做呢,请帮忙,谢谢你

Swipe my TableView Image

更新答案

  - (void)swipeableTableViewCell:(SWTableViewCell *)cell scrollingToState:(SWCellState)state{
if(state ==1){
 NSIndexPath *indexPaths = [self.table_view indexPathForCell:cell];

    NSManagedObject *selectedDevices = [self.devices objectAtIndex:[self.table_view indexPathForCell:cell].row];
    NSLog(@"device %@",selectedDevices);
    [selectedDevices setValue:@"OnTime" forKeyPath:@"time"];

    NSError *saveError = nil;
    [self.managedObjectContext save:&saveError];
    if (saveError)
    {

    }
    else
    {


    }
 }

1 个答案:

答案 0 :(得分:0)

根据评论中的讨论,您需要按照这些简单的步骤来实现您想要的目标

  1. 使用tag方法cellForRowAtIndexPath:设置单元格的cell.tag = indexPath.row,以便您可以稍后从devices数组中获取记录
  2. delegate小区访问方法中,使用相关的NSManagedObject并更新time
  3. 的值
  4. 将这些更改保存在持久存储中
  5. 在刚刚更新的indexPath重新加载单元格
  6. 代码如下:

    NSInteger index = cell.tag;
    NSManagedObject *device = [self.devices objectAtIndex:index];
    [device setValue:[NSDate date] forKey:@"tine"];
    NSError *error;
    
    if ([context save:&error]) {
        [self.tableView reloadRowsAtIndexPaths:[NSIndexPath indexPathForRow:index inSection:0] withRowAnimation:UITableViewRowAnimationAutomatic];
    }