ios - 如何为 CoreData 中的特定索引设置值。 iOS swift

标签 ios swift core-data

在我的应用程序中,我使用了核心数据,并在按下 uitableview 单元格的按钮时删除或取消固定该值。

所以在点击按钮时,我想设置该索引的值。

这是我的代码:

在cellforrow at index path方法

cell.pinButton.tag = indexPath.row
    cell.pinButton.addTarget(self, action: #selector(MessageViewController.buttonDeletePressed(_:)), forControlEvents: UIControlEvents.TouchUpInside)


    cell.btnpinUnpin.tag = indexPath.row
    cell.btnpinUnpin.addTarget(self, action: #selector(MessageViewController.buttonPinPressed(_:)), forControlEvents: UIControlEvents.TouchUpInside)

这些都是函数

func buttonDeletePressed(sender:UIButton) {
    //        let index = sender.tag
    //        print(index)
    //        let feedId = person?.valueForKey("feed_id")?.objectAtIndex(index)
    //        deleteFeed(feedId! as! String)

    let index = sender.tag
 //   print(index)
    moc.deleteObject(people[index] as NSManagedObject)
    people.removeAtIndex(index)
    let _ : NSError! = nil
    do {
        try moc.save()
        self.feedTable.reloadData()
    } catch {
        print("error : \(error)")
    }

}


func buttonPinPressed(sender:UIButton) {
    //        let index = sender.tag
    //        print(index)
    //        let feedId = person?.valueForKey("feed_id")?.objectAtIndex(index)
    //        deleteFeed(feedId! as! String)

    let index = sender.tag
 //   print(index)
    //   moc.deleteObject(people[index] as NSManagedObject)

    if (person?.valueForKey("isPin") as! String == "1")
    {
        person?.setValue("0", forKey: "isPin")
    }
    else
    {
        person?.setValue("1", forKey: "isPin")
    }


    //   people.removeAtIndex(index)
    let _ : NSError! = nil
    do {
        try moc.save()
        self.feedTable.reloadData()
    } catch {
        print("error : \(error)")
    }

}

通过这个我可以正确地删除整个对象。但是,当我每次选择最后一个值时,我都会在图钉按钮上贴上胶带。原因是我无法为该 nsmanagedobject 设置索引。那么我该怎么做呢?

最佳答案

你缺少 person = people[index]

但是,您真正的问题是您正在使用标签,这会迫使您一直重新加载表格,否则很多标签在删除后都是错误的。

还建议使用 FRC 作为数据源,然后您可以动画化您的更新。

为了实现这一点,您需要创建一个自定义单元格类,这样您就可以向它传递比标记值更好的东西。这可能是托管对象本身(不理想),对象是托管对象的(更好),或不同的类,如 View 模型,它知道按下按钮时要做什么(并且可以为也显示单元格)(最好)。

关于ios - 如何为 CoreData 中的特定索引设置值。 iOS swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37628119/

相关文章:

ios - Firebase 动态链接无法在 iOS 10 上打开应用程序

iphone - iOS注销设计

iphone - JSON 到具有关系的核心数据

ios - 按“后退”按钮执行 segue

iphone - 我如何在 self.view 中调用这个方法?

ios - 收到错误 : Type 'String' has no member 'foregroundColor' in Swift 4

ios - 场景视角线程1 : EXC_BAD_ACCESS (code=1, 地址=0x0)

ios - 如何快速动态更改 Collection View 的大小?

ios - 核心数据 : No existing entry for row 0 but for row 1, 2,3

ios - 用于插入新对象的 CoreData 语法