2010-07-07 64 views
3

我使用iPhone enumerateGroupsWithTypes整理選擇

[assetsLibrary enumerateGroupsWithTypes:groupTypes usingBlock:listGroupBlock failureBlock:failureBlock]; 

枚舉相冊。

枚舉器以「異步」方式進行操作,換句話說,枚舉器在枚舉所有項之前返回。

如何知道枚舉何時完成?

我使用組填充NSMutableArray,枚舉完成後將調用[myTableView reloadData]

回答

10

您的枚舉將爲您的塊設置一個無指針組,並在其最後一次傳遞時將stop設置爲true。你可以使用它來設置一個標誌或使用performSelectorOnMainThread調用一些結束代碼:在下一次通過RunLoop時。

0

我看了一下API,因爲我起初以爲答案是使用一些同步方法來做同樣的事情。由於沒有這樣的方法,我懷疑由於一些實現細節,枚舉器並不提前知道它有多少項。另外,它可能很慢。

在這種情況下,我會在枚舉運行時重新加載表格,非常小心不要阻塞主線程或枚舉線程。以下是我想嘗試的:

進行枚舉,將新項目存儲在數組中以便在表中顯示。每隔X秒(0.1可能?),將新項添加到用作表的數據源的數組中,然後重新加載它。請確保使用performSelectorOnMainThread:添加到表的數組或重新加載其數據時。將這些項目添加到表格數組後,將添加到表格數組中的新項目數組。

這種方法對於用戶來說會立即開始加載,即使實際需要一段時間才能加載所有內容。