我没有崩溃,而执行executeFetchRequest:错误:崩溃而执行读取请求
MyApp[595]
已经超出允许的时间活跃断言:
{(
<SBProcessAssertion: 0x1e5d1260> identifier: Suspending process: MyApp[595]
permittedBackgroundDuration: 10.000000 reason: suspend owner pid:29 preventSuspend
preventThrottleDownCPU preventThrottleDownUI
这是我的代码:
NSString *predString = [NSString stringWithFormat:@"categoryId MATCHES '%@'", categoryId];
NSPredicate *predicate = [NSPredicate predicateWithFormat:predString];
[request setPredicate:predicate];
NSError *error = nil;
NSArray* objects = [context executeFetchRequest: request error: &error];
据我所知,在主线程中同步完成的获取花费了太多时间,超过10秒,并且进程被暂停。
在浏览互联网,我发现这个很好的解决方案,使获取异步:
http://blog.zssz.me/2010/01/asynchronous-fetch-in-core-data.html
但我想知道如果我的实际的假设是正确的,如果有这个问题简单的解决方案。 非常感谢。
感谢TechZen。其余案例不会错误,但会返回不正确的结果。我会改变它。你认为无论如何都需要在后台进行抓取? – toupper 2011-06-15 07:34:10
除了非常大的数据集之外,通常没有必要。此外,如果您要通过用户界面获取信息以向用户显示,您是否希望用户继续处理过时的信息?您可能不会在UI的背景中提取通常没有任何用处。然而,真正的答案总是相同的:从最简单的解决方案开始并对其进行压力测试。只采用更复杂的解决方案是最简单的解决方案经过测试并证明不足。 – TechZen 2011-06-15 15:05:05
我明白了,非常感谢! – toupper 2011-06-16 11:51:39