2017-06-01 68 views
1

所以,在診斷我的代碼之後,我將其縮小到一行,導致我的整個項目需要幾秒到幾個小時才能構建。我將參數傳遞給Alamofire發送給我的API,但是它們導致Xcode永久索引/構建。誰能弄清楚爲什麼?Swift 3和Alamofire:極慢構建時間

線有問題

 var credit_union : String = "" 
     var activity : String = "" 
     var task : String = "" 
     var billing_options : String = "" 

     var sun : Float = 0 
     var mon : Float = 0 
     var tue : Float = 0 
     var wed : Float = 0 
     var thu : Float = 0 
     var fri : Float = 0 
     var sat : Float = 0 
     var total : Float = 0 

     var sun_notes : String = "" 
     var mon_notes : String = "" 
     var tue_notes : String = "" 
     var wed_notes : String = "" 
     var thu_notes : String = "" 
     var fri_notes : String = "" 
     var sat_notes : String = "" 

     let approval : String = "" 
     let department : String = currentUser.department 
     let submitted : String = "Not Submitted" 
     let date_of_time : Date = startDatePassing + 1.day 
     let id : Int = 0 


let parameters: Parameters = [ 
      "credit_union": credit_union, 
      "activity": activity, 
      "task" : task, 
      "billing_options" : billing_options, 
      "sun" : sun, 
      "mon" : mon, 
      "tue" : tue, 
      "wed" : wed, 
      "thu" : thu, 
      "fri" : fri, 
      "sat" : sat, 
      "total" : total, 
      "sun_notes" : sun_notes, 
      "mon_notes" : mon_notes, 
      "tue_notes" : tue_notes, 
      "wed_notes" : wed_notes, 
      "thu_notes" : thu_notes, 
      "fri_notes" : fri_notes, 
      "sat_notes" : sat_notes, 
      "approval" : approval, 
      "department" : department, 
      "submitted" : submitted, 
      "date_of_time" : date_of_time 
     ] 
+2

顯然大字典文字慢編譯時間:https://spin.atomicobject.com/2016/04/26/swift-long-compile-time/ – hola

+0

我們有相似的名稱:d 是否有辦法以不同的方式聲明參數以避免這種情況? – Holabola

+0

'let parameter:Parameters' 使變量'parameter'成爲你的類'Parameter'的一個對象,但是你正在給它分配一個字典。 除此之外,如果今天是星期二,那麼其他工作日的值是否也會填入任何有用的數據或只是默認值?考慮發送當天的信息 – eshirima

回答

2

我通常解決這類問題(我也看到它有複雜的字符串,長數組等情況的發生),通過構建它一塊在同一時間。例如

var parameters: Parameters = ["credit_union": credit_union] 
parameters["activity"] = activity 
// etc. 
+2

太棒了!不幸的是,這個bug在Swift中已經持續了很長時間,但是它的功能就像一個魅力! 6,000,000ms的加載時間到79.1ms:D – Holabola

+2

@Holabola請注意,這使得'parameters'可變。如果你希望它保持不變,請參閱我的答案。 – Sweeper

+0

快速的問題,因爲我是新的實際與這個網站進行交互。這是我可能會用到的答案,但您的回答是更準確的答案,正如您所指出的那樣。我會在這種情況下選擇什麼答案? – Holabola

3

這需要很長的時間來建立,因爲有一個字典文字。您可以嘗試使用dict[key] = value語法來創建字典。

let parameters: Parameters = { 
    var dict = Parameters() 
    dict["credit_union"] = credit_union 
    dict["activity"] = activity 
    // the rest of the KVPs goes here 
    return dict 
}()