在索引 0 处插入元素,NSManagedObject

Posted

技术标签:

【中文标题】在索引 0 处插入元素,NSManagedObject【英文标题】:Insert element at index 0, NSManagedObject 【发布时间】:2016-01-22 05:54:18 【问题描述】:

我无法在CoreData 的第一个索引处插入元素

let appDelegate =
UIApplication.sharedApplication().delegate as! AppDelegate

let managedContext = appDelegate.managedObjectContext

let entity =  NSEntityDescription.entityForName("Thing",
  inManagedObjectContext:managedContext)

let thing = NSManagedObject(entity: entity!,
  insertIntoManagedObjectContext: managedContext)

thing.setValue(name, forKey: "name")
thing.setValue(category, forKey: "category")

do 
  try managedContext.save()
 catch let error as NSError 

如何在索引 0 处插入 thing?有可能还是我必须重写所有数据?谢谢!

【问题讨论】:

为什么在插入之前保存上下文,必须在之后保存? things 是 @NSManaged NSOrderedSet 吗? 更新了问题 代码中不再有“插入”,问题现在无效 您只需将对象作为“浮动”对象添加到核心数据上下文中 您必须有一个带有有序集合的Things 对象的Thing 谈论在第一个位置插入 我在问这个问题,我是否必须清除核心数据然后用有序数组再次写入 【参考方案1】:

您不能在特定索引处插入新的NSManagedObject。存储在商店中的订单是由 CoreData 和 SQLite 管理的。相反,您应该确保按您想要的顺序获取对象。这是通过为您的 fetch 请求指定 排序描述符 (NSSortDescriptor) 来完成的。所以如果你想要name 订购的东西,你会使用:

let nameSort = NSSortDescriptor(key:"name", ascending:true)
fetchRequest.sortDescriptors = [nameSort]

如果您需要其他排序顺序,如有必要,请向您的实体添加一个属性以表示该排序顺序,并为您创建的每个对象设置适当的值。

【讨论】:

以上是关于在索引 0 处插入元素,NSManagedObject的主要内容,如果未能解决你的问题,请参考以下文章

在列表中的特定索引处插入元素并返回更新后的列表

无法在索引 0 处插入 CAGradientLayer(在 tableView 后面)

如何在数组的索引0处推送元素[重复]

读取向量指针索引处的元素

一个向量索引处的多个元素

在Python中插入列表的第一个位置[关闭]