簡體   English   中英

盡可能快地循環遍歷數組的最佳方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM