2013-01-24 31 views
1

我是新的核心數據,所以很抱歉,如果這是一個愚蠢的問題。NSFetchRequest:FetchBatchSize和錯誤行爲

有沒有辦法在通過訪問NSManagedObject關係來觸發故障而生成的自動獲取請求上設置fetchBatchSize屬性?

例如,假設我有一個「公司」實體和一個「僱員」實體,具有「公司」到「僱員」之間的一對多關係。我提出取回請求以檢索所有公司,然後爲一家公司我想要加載其員工。

最明顯的方法是做這樣的事情:

NSSet *employees = [anyCompany employees]; 

但後來了,我怎麼設置fetchBatchSize屬性,以確保不會在同一時間加載太多的數據?

預先感謝您。

+0

'NSSet * employees = [anyCompany employees]'不提取數據,它返回一個「關係錯誤」。只有在訪問集合中某個對象的屬性時,纔會觸發故障,並根據需要從該存儲中提取此對象的屬性。 –

回答

3

fetchBatchSize只是定義在往返存儲器的一次往返中將檢索多少條記錄。例如,如果一個實體有1000個條目,並且批量大小爲20,則獲取所有條目的提取請求將實際執行50條SQL語句。

很明顯,這取決於您的提取上下文不是非常有效。如果內存成爲問題,您可以使用批量大小來校準提取請求,但在大多數情況下,您不必太在意它太多。但是,不必多次往返商店,很可能會影響業績。

所以只需使用一個語句,比如

aCompany.employees 

寬鬆,讓核心數據處理內存管理。它通常只會檢索實際顯示或計算所需的實體和屬性。