加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – Core Data查询中fetchLimit和fetchOffset的可能

发布时间:2020-12-16 03:33:06 所属栏目:百科 来源:网络整理
导读:我有一个非常零星的错误,包含fetchLimit和fetchOffset的核心数据查询.一段时间(我已经看到它发生一次,和另一个测试人员一样),fetchOffset似乎被忽略.查询如下所示: NSFetchRequest *fetch = [[NSFetchRequest alloc] initWithEntityName:@"MyEntity"];NSSor
我有一个非常零星的错误,包含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,以防万一这是问题,因为性能不应该是一个问题.但是我想知道有没有人想到这个bug可能在哪里.

解决方法

今天早上遇到类似的问题,并注意到我的NSManagedObjectContext是否有未保存的更改,fetchOffset可能因为任何原因而被忽略.保存上下文后,fetchOffset被正确解释.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读