当我使用 @FetchRequest 和 fetchLimit 进行常规查询时 - 它有效。但是,当新记录动态添加到 Core Data 时,@FetchRequest 会相应更新,但不再遵守 fetchLimit。
为了复制这一点,我在 Xcode 中创建了一个新的默认项目并选中“使用核心数据”,然后创建了一些新的时间戳: 然后我更改了默认代码以引入 fetchLimit:
//Instead of this:
/*@FetchRequest(
sortDescriptors: [NSSortDescriptor(keyPath: \Item.timestamp, ascending: true)],
animation: .default)
private var items: FetchedResults<Item>*/
//I'm using this:
@FetchRequest private var items: FetchedResults<Item>
init() {
let request: NSFetchRequest<Item> = Item.fetchRequest()
request.sortDescriptors = [NSSortDescriptor(keyPath: \Item.timestamp, ascending: true)]
//fetchLimit is set here:
request.fetchLimit = 3
_items = FetchRequest(fetchRequest: request)
}
但是,当我单击加号按钮添加新记录时 - @FetchRequest 会动态更新,但会显示四个项目,而不是三个:
如何让 @FetchRequest 保持反应性更新,但又尊重 fetchLimit?