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

前端之家收集整理的这篇文章主要介绍了objective-c – Core Data查询中fetchLimit和fetchOffset的可能问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个非常零星的错误,包含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被正确解释.

猜你在找的C&C++相关文章