2017-06-02 72 views
-1

修訂警告****境界方法拋出「永遠不會被執行」斯威夫特

這個問題是不相關的嵌套的循環或領域。我在錯誤的位置宣佈了一個變數。

我在一個項目中使用Realm,並且在嵌套循環內調用Realm時發出警告。在下面的寫入方法中,警告被調用。

 let realm = try! Realm() 
     let fetchedArticles = realm.objects(Article.self) 

     for article in fetchedArticles 
     { 
      // Test for 30 Articles 
      var iArticleNumber = 0 

      if iArticleNumber < 30 
      { 
       // Do nothing 
      } 
      else if iArticleNumber >= 30 
      { 
       try! realm.write // ** WARNING IS THROWN HERE ON WRITE ** 
       { 
        realm.delete(article) 
       } 
      } 

      iArticleNumber += 1 
     } 

如果我刪除if-else代碼,我不會收到錯誤。

let realm = try! Realm() 
let fetchedArticles = realm.objects(Article.self) 

try! realm.write 
{ 
    realm.delete(fetchedArticles[0]) 
} 

有人能幫我理解爲什麼以及如何讓錯誤消失嗎?

+0

該問題與Realm或* nested *循環無關。 –

回答

2

你正在循環中聲明iArticleNumber。它永遠不會超過1,因爲它會重置每一次迭代。只需將該聲明移至循環外部

或者...不要使用自己的計數器。爲了這個目的,有一個完全可用的變體。

for (iArticleNumber, article) in fetchedArticles.enumerated() { 
    print("Item \(iArticleNumber): \(article)") 
} 
+0

哈哈,這很尷尬。謝謝您的幫助。在我發佈之前,我應該已經看到了這一點。 – jonthornham