[英]Best way to loop through an array as fast as possible?
現在,我的應用程序檢索了大約 1000 個 CKRecords,它們被放入一個數組中。 稍后我需要遍歷這個數組。 當我只有大約 100 條記錄來循環我的應用程序時,它運行得既流暢又快速,但現在隨着記錄數量的增加,它變得越來越慢。 我計划檢索大約 3000 個 CKRecords,所以這對我來說可能是一個嚴重的問題。
這是我現在想出的:
//movies == The NSMutableArray
if let recordMovies = movies.objectEnumerator().allObjects as? [CKRecord] {
for movie in recordMovies {
//Looping
print(movie.objectForKey("Title") as? String)
{
}
但這並沒有多大幫助,因為我必須將 NSMutableArray 轉換為 CKRecords 數組。 我這樣做是因為我必須在循環時訪問 CKRecords 屬性,例如 movieTitle。 我可以采取什么措施來加快循環過程
遍歷數組的 1000(或 5000)個元素應該只需要一秒鍾的時間。
但是,打印到調試控制台的速度非常慢。 擺脫你的打印聲明。
如果movies
是 CKRecord 對象的數組,為什么不能將其轉換為所需的數組類型?
let start = NSDate.timeIntervalSinceReferenceDate()
if let recordMovies = movies as? [CKRecord] {
for movie in recordMovies {
//Do whatever work you need to do on each object, but DON'T use print
{
}
let elapsed = NSDate.timeIntervalSinceReferenceDate() - start
print( "iterating through the loop took \(elapsed) seconds")
通過制作“電影”不僅是 NSMutableArray,而且是 CKRecords 的 NSMutableArray,您可以節省大量時間,這使得無需將數組從 NSMutableArray 轉換為 CKRecord 的 Swift 數組。
在 Objective-C 中:而不是
NSMutableArray* movies;
你用
NSMutableArray <CKRecord*> *movies;
因此,例如,電影 [1] 的類型將是 CKRecord*,而不是 id。 作業電影 [1] = 某事; 要求“某物”的類型為 CKRecord* 或 id,僅此而已。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.