核心数据更新所有“索引”属性(iOS)
Posted
技术标签:
【中文标题】核心数据更新所有“索引”属性(iOS)【英文标题】:Core Data updating all "index" property (iOS) 【发布时间】:2017-02-18 02:57:07 【问题描述】:我在实体“Task”中有一个名为“boardIndex”的核心数据属性 (NSNumber)。每个 boardIndex 都是唯一的,这意味着 boardIndex 3 不能有两个任务。
当我更新 boardIndex 时,比如从 3 到 5,我需要通过递增或递减 1(或什么都不做)来更新 Core Data 中的所有其他实体“boardIndex”属性。比如boardIndex为4的task现在为3,boardIndex为5的task现在为4,boardIndex为3的task现在为5;类似于 indexPath 在 tableView 中的工作方式。
这样做的最佳做法是什么?我读过“Core Spotlight”,但我不确定这是否是正确的方法。任何帮助都会很棒。
如果有帮助就写代码:
//This only updates one task, how to update other tasks?
task?.boardIndex = childIndexPath?.row as NSNumber?
DataBaseManager.sharedInstance.save()
【问题讨论】:
【参考方案1】:当我更新 boardIndex 时,比如从 3 到 5,我需要通过递增或递减 1(或不执行任何操作)来更新 Core Data 中的所有其他实体“boardIndex”属性。
最好的方法是使用为您维护任务顺序的数据结构。使用 Core Data 的方法是使用有序对多属性。
创建一个单独的实体来保存任务列表。例如,您可能有一个Board
实体,它与Task
具有一对多、有序的关系。该有序关系将由一个 NSOrderedSet
对象表示,您可以向该对象添加您的任务。
我阅读了“Core Spotlight”,但我不确定这是否是正确的方法。
这是一种完全不同的索引——Spotlight 让用户可以搜索他们设备上的数据,而 Core Spotlight 让您可以在搜索中包含应用程序的数据。
【讨论】:
嗨,Caleb,抱歉耽搁了。我相信这是我需要的答案。谢谢!以上是关于核心数据更新所有“索引”属性(iOS)的主要内容,如果未能解决你的问题,请参考以下文章
使用核心数据swift ios将实体的所有属性获取到tableview中的行中的标签