gpt4 book ai didi

objective-c - 核心数据查询中的 fetchLimit 和 fetchOffset 可能存在问题

转载 作者:技术小花猫 更新时间:2023-10-29 11:18:19 27 4
gpt4 key购买 nike

我有一个非常偶发的错误,它涉及包含 fetchLimit 和 fetchOffset 的核心数据查询。在很长一段时间内(我已经看到它发生过一次,另一个测试人员也是如此),fetchOffset 似乎被忽略了。查询看起来像这样:

NSFetchRequest *fetch = [[NSFetchRequest alloc] initWithEntityName:@"MyEntity"];
NSSortDescriptor *dateDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timestamp" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
[fetch setSortDescriptors:sortDescriptors];

fetch.fetchOffset = 500;
fetch.fetchLimit = 1;

NSError *error = nil;
NSArray *objects = [self.managedObjectContext executeFetchRequest:fetch error:&error];
if (objects.count) {
MyEntity *objectAtLimit = [objects objectAtIndex:0];
}

这几乎总是按需要返回第 501 个对象,但在它中断的那两次情况下,它返回了第一个对象。

除非数据库中有 >500 行,否则永远不会运行查询。我正在使用 iOS5。 managedObjectContext 有一个 mainQueueConcurrencyType。

这似乎与此问题中报告的行为相同:Paging results from Core Data requests ,从未解决(或至少未在列表中)。在这种情况下,根据正在测试的数据模型,fetchOffset 似乎被忽略或受到尊重。

我可能会在没有 fetchOffset 的情况下重写查询,以防出现问题,因为性能应该不是问题。但我想知道是否有人想过这个错误可能在哪里。

最佳答案

今天早上遇到了一个类似的问题,并注意到如果我的 NSManagedObjectContext 有未保存的更改,那么 fetchOffset 可能会因为任何原因而被忽略。保存上下文后,fetchOffset 被正确解释。

关于objective-c - 核心数据查询中的 fetchLimit 和 fetchOffset 可能存在问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10725252/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com