我沒有崩潰,而執行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