在索引 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的主要内容,如果未能解决你的问题,请参考以下文章