Xcode 8 very slow Swift compiling

后端 未结 8 1498
太阳男子
太阳男子 2020-12-12 13:54

Ever since Swift 3 and Xcode 8 my project compiles quite slowly. Every time I add so much as an empty line to a file, recompiling takes a full minute. When I check the outpu

8条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-12 14:41

    In my case I was using a helper function to save some data in Firebase. That function was returning a dictionary with about 20 elements and it would take about 40 mins to compile. My solution was to initialize an empty dictionary and then add the items one by one to someDict . Now it compiles in less than 30 seconds. I hope it helps.

    Before

    func toAnyObject() -> AnyObject {
      return
          ["BookingAmount":BookingAmount,
         "BookingNumber":BookingNumber,
         "PostCode":PostCode,
         "SelectedBathRow":SelectedBathRow,
         "SelectedBedRow":SelectedBedRow,
         "DateAndTime":DateAndTime,
         "TimeStampDateAndTime":TimeStampDateAndTime,
         "TimeStampBookingSavedInDB": TimeStampBookingSavedInDB,
         "FrequencyName":FrequencyName,
         "FrequecyAmount":FrequecyAmount,
         "insideCabinets": insideCabinets,
         "insideFridge": insideFridge,
         "insideOven": insideOven,
         "laundryWash": laundryWash,
         "interiorWindows": interiorWindows,
         "FullName":FullName,
         "SuppliesName":SuppliesName,
         "SuppliesAmount":SuppliesAmount,
         "FlatNumber":FlatNumber,
         "StreetAddress":StreetAddress,
         "PhoneNumber":PhoneNumber,
         "EmailAddress":EmailAddress] as AnyObject
    
    }
    

    After

      func toAnyObject() -> AnyObject {
    
        var someDict = [String : AnyObject]()
        someDict["BookingAmount"] = self.BookingAmount as AnyObject?
        someDict["BookingNumber"] = self.BookingNumber as AnyObject?
        someDict["PostCode"] = self.PostCode as AnyObject?
        someDict["SelectedBathRow"] = self.SelectedBathRow as AnyObject?
        someDict["SelectedBedRow"] = self.SelectedBedRow as AnyObject?
        someDict["DateAndTime"] = self.DateAndTime as AnyObject?
        someDict["TimeStampDateAndTime"] = self.TimeStampDateAndTime as AnyObject?
        someDict["TimeStampBookingSavedInDB"] = self.TimeStampBookingSavedInDB as AnyObject?
        someDict["FrequencyName"] = self.FrequencyName as AnyObject?
        someDict["FrequecyAmount"] = self.FrequecyAmount as AnyObject?
        someDict["insideCabinets"] = self.insideCabinets as AnyObject?
        someDict["insideFridge"] = self.insideFridge as AnyObject?
        someDict["insideOven"] = self.insideOven  as AnyObject?
        someDict["laundryWash"] = self.laundryWash as AnyObject?
        someDict["interiorWindows"] = self.interiorWindows as AnyObject?
        someDict["FullName"] = self.FullName as AnyObject?
        someDict["SuppliesName"] = self.SuppliesName as AnyObject?
        someDict["SuppliesAmount"] = self.SuppliesAmount as AnyObject?
        someDict["FlatNumber"] = self.FlatNumber as AnyObject?
        someDict["StreetAddress"] = self.StreetAddress as AnyObject?
        someDict["PhoneNumber"] = self.PhoneNumber as AnyObject?
        someDict["EmailAddress"] = self.EmailAddress as AnyObject?
    
        return someDict as AnyObject
    }
    

提交回复
热议问题