在索引 0 处插入元素,NSManagedObject

Insert element at index 0, NSManagedObject

我在 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?有可能还是我必须重写所有数据?谢谢!

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

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

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