从Core Data,iOS获取上次插入的项目
有没有办法让核心数据库中的最后一个插入的项目?
这将返回最后一个插入的对象。
setFetchLimit:1和setFetchOffset:[所有条目的数量 – 1]
我不认为这是由Core Data本地支持的。 我想你最好的select是添加一个“dateInserted”属性到你的实体。
方法1:
我已经扩展@Olsi答案与示例代码包括行来获取所有实体的数量。 以下是我如何做到的:
let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let context: NSManagedObjectContext = appDelegate.managedObjectContext let request = NSFetchRequest(entityName: "MyEntity") let allElementsCount = context.countForFetchRequest(request, error: nil) request.fetchLimit = 1 request.fetchOffset = allElementsCount - 1 request.returnsObjectsAsFaults = false
方法2:
Howerver还有另一种使用sortDescriptors
的方法。 不知道哪个更合适,他们都做同样的工作:
let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let context: NSManagedObjectContext = appDelegate.managedObjectContext let request = NSFetchRequest(entityName: "MyEntity") request.sortDescriptors = [NSSortDescriptor(key: "momentTimeStamp", ascending: false)] request.fetchLimit = 1 request.returnsObjectsAsFaults = false
- 使用Swift 3在Xcode 8中寻找修订后的NSPersistentContainer的清晰教程
- 如何在iOS中退出程序时closuresUIManagedDocument
- 当两个单独的NSFetchRequests都完成时采取行动
- Swift CoreData UnitTest:如何避免EXC_BREAKPOINT
- NSFetchedResultsController的快速部分
- Core Data轻量级迁移有多less个迁移步骤?
- 从另一个方法中删除NSManagedObjectContext中的对象
- 对于在主线程的appDelegate managedObjectContext中创build的对象,“核心数据无法完成错误”
- 首次启动时重置核心数据