添加新记录时如何让@FetchRequest尊重fetchLimit

问题描述 投票:0回答:0

当我使用 @FetchRequest 和 fetchLimit 进行常规查询时 - 它有效。但是,当新记录动态添加到 Core Data 时,@FetchRequest 会相应更新,但不再遵守 fetchLimit。

为了复制这一点,我在 Xcode 中创建了一个新的默认项目并选中“使用核心数据”,然后创建了一些新的时间戳: Initial 然后我更改了默认代码以引入 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)
    }

此代码按预期工作,仅显示 3 项: Showing only 3 items

但是,当我单击加号按钮添加新记录时 - @FetchRequest 会动态更新,但会显示四个项目,而不是三个: Fourth item gets added

如何让 @FetchRequest 保持反应性更新,但又尊重 fetchLimit?

swift core-data
© www.soinside.com 2019 - 2024. All rights reserved.