如何为 CoreData 中的特定索引设置值。 iOS 斯威夫特
Posted
技术标签:
【中文标题】如何为 CoreData 中的特定索引设置值。 iOS 斯威夫特【英文标题】:how to set value for perticular index in CoreData. iOS Swift 【发布时间】:2016-06-04 08:29:45 【问题描述】:在我的应用程序中,我使用了核心数据,并在按下 uitableview 单元格的按钮时删除或取消固定值。
所以在单击按钮时,我想设置该索引的值。
这是我的代码:
在cellforrow中的索引路径方法
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)")
这样我可以正确删除整个对象。但是,当我每次选择最后一个值时,我都会在 pin 按钮上粘贴。原因是我无法为该 nsmanagedobject 设置索引。那么我该怎么做呢?
【问题讨论】:
【参考方案1】:你错过了person = people[index]
但是,您真正的问题是您正在使用标签,这会迫使您一直重新加载表格,因为否则很多标签在删除后都是错误的。
还建议使用 FRC 作为数据源,然后您可以为更新设置动画。
为了实现这一点,您将创建一个自定义单元格类,以便您可以传递比标签值更好的东西。那可能是托管对象本身(不理想),对象是托管对象(更好),或者是不同的类,如视图模型,它知道按下按钮时要做什么(并且可以为单元格也显示)(最好)。
【讨论】:
以上是关于如何为 CoreData 中的特定索引设置值。 iOS 斯威夫特的主要内容,如果未能解决你的问题,请参考以下文章
如何为使用 python 保存的 tiff 图像设置像素大小,以便将像素高度和宽度设置为 ImageJ 中的特定值?