2017-06-01 13 views
1

私のコードを診断した後、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

素晴らしい!残念ながら、このバグはずっと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 
}() 
関連する問題