[英]Compiling Swift source files issue with creating dictionary
我正在快速創建字典,編譯時間很長(20分鍾)
import Foundation
extension Renter {
var dictionaryRepresentation: [String: Any]? {
guard let email = email,
let zipCode = wantedZipCode,
let city = wantedCity,
let state = wantedState,
let country = wantedCountry,
let creditRating = creditRating,
let firstName = firstName,
let lastName = lastName,
let id = id
else { return nil }
var dictionaryRepresentation: [String: Any] = [UserController.kEmail: email,
UserController.kZipCode: zipCode,
UserController.kCity: city,
UserController.kState: state,
UserController.kCountry: country,
UserController.kCreditRating: creditRating,
UserController.kPetsAllowed: wantsPetFriendly,
UserController.kSmokingAllowed: wantsSmoking,
UserController.kWasherDryer: wantsWasherDryer,
UserController.kGarage: wantsGarage,
UserController.kDishwasher: wantsDishwasher,
UserController.kBackyard: wantsBackyard,
UserController.kPool: wantsPool,
UserController.kGym: wantsGym,
UserController.kFirstName: firstName,
UserController.kLastName: lastName,
UserController.kMonthlyPayment: Int(wantedPayment),
UserController.kID: id,
UserController.kBedroomCount: Int(wantedBedroomCount),
UserController.kBathroomCount: wantedBathroomCount,
UserController.kBio: bio ?? "No bio available",
UserController.kStarRating: starRating,
UserController.kMaritalStatus: maritalStatus ?? "Not specified",
UserController.kCurrentOccupation: currentOccupation ?? "No occupation yet",
UserController.kWithinRangeMiles: withinRangeMiles,
UserController.kBankruptcies: bankruptcies,
UserController.kCriminalHistory: criminalHistory ?? "",
UserController.kDriversLicenseNumber: driversLicenceNum ?? "",
UserController.kDriversLicensePicURL: driversLicensePicURL ?? "",
UserController.kEvictionHistory: evictionHistory ?? "",
UserController.kIncome: income ?? 0,
UserController.kIsStudent: isStudent ?? false,
UserController.kIsVerified: isVerified ?? false,
UserController.kPreviousAddress: previousAddress ?? "",
UserController.kReasonsForLeaving: reasonForLeaving ?? "",
UserController.kSchool: school ?? "",
UserController.kStudentID: studentID ?? "",
UserController.kStudentPhotoIdURL: studentPhotoIDURL ?? ""]
guard let profileImageArray = self.profileImages?.array as? [ProfileImage] else { return dictionaryRepresentation }
let imageURLs = profileImageArray.flatMap({$0.imageURL})
dictionaryRepresentation[UserController.kImageURLS] = imageURLs
guard let occupationHistory = self.occupation?.allObjects as? [Occupation] else { return dictionaryRepresentation }
let occupationDicts = occupationHistory.flatMap({ $0.dictionaryRepresentation })
dictionaryRepresentation[UserController.kOccupationHistory] = occupationDicts
return dictionaryRepresentation
}
}
我已經對其進行了測試,並且知道它是本詞典的創建,因為我嘗試刪除了一半的詞典,並且編譯速度更快。 有人對如何加快速度有一些提示嗎?
在當前版本的Swift中,將字面值賦給字典是很麻煩的,並且很可能觸發編譯問題。 一個快速的解決方法是避免使用文字,並且要長期進行。
var dictionaryRepresentation = [String: Any]()
dictionaryRepresentation[key1] = value1
dictionaryRepresentation[key2] = value2
...
它生成更多代碼,但編譯速度非常快。
我給出了一個完整的代碼示例,它以這種方式可以非常快速地進行編譯...我確信您可以類似地修改自己的代碼...
import Foundation
func getDict(email : String, zipCode : String, city: String, state: String, country: String, creditRating: String,
wantsPetFriendly: Bool, wantsSmoking: Bool, wantsWasherDryer: Bool, wantsGarage: Bool, wantsDishwasher: Bool,
wantsBackyard: Bool, wantsPool: Bool, wantsGym: Bool, firstName: String, lastName: String,
wantedPayment: NSNumber, id: Int, wantedBedroomCount: NSNumber, wantedBathroomCount: NSNumber,
bio: String?, starRating: Int, maritalStatus: String?, currentOccupation: String?,
withinRangeMiles: Bool, bankruptcies: String, criminalHistory: String?,
driversLicenceNum: Int?, driversLicensePicURL: String?, evictionHistory: String?,
income: Int?, isStudent: Bool?, isVerified: Bool?, previousAddress: String?,
school : String?,studentPhotoIDURL: String?,
studentID: String?, reasonForLeaving: String?) -> [String: Any] {
var dictionaryRepresentation = [String: Any]()
dictionaryRepresentation["kEmail"] = email
dictionaryRepresentation["kZipCode"] = zipCode
dictionaryRepresentation["kCity"] = city
dictionaryRepresentation["kState"] = state
dictionaryRepresentation["kCountry"] = country
dictionaryRepresentation["kCreditRating"] = creditRating
dictionaryRepresentation["kPetsAllowed"] = wantsPetFriendly
dictionaryRepresentation["kSmokingAllowed"] = wantsSmoking
dictionaryRepresentation["kWasherDryer"] = wantsWasherDryer
dictionaryRepresentation["kGarage"] = wantsGarage
dictionaryRepresentation["kDishwasher"] = wantsDishwasher
dictionaryRepresentation["kBackyard"] = wantsBackyard
dictionaryRepresentation["kPool"] = wantsPool
dictionaryRepresentation["kGym"] = wantsGym
dictionaryRepresentation["kFirstName"] = firstName
dictionaryRepresentation["kLastName"] = lastName
dictionaryRepresentation["kMonthlyPayment"] = Int(wantedPayment)
dictionaryRepresentation["kID"] = id
dictionaryRepresentation["kBedroomCount"] = Int(wantedBedroomCount)
dictionaryRepresentation["kBathroomCount"] = wantedBathroomCount
dictionaryRepresentation["kBio"] = bio ?? "No bio available"
dictionaryRepresentation["kStarRating"] = starRating
dictionaryRepresentation["kMaritalStatus"] = maritalStatus ?? "Not specified"
dictionaryRepresentation["kCurrentOccupation"] = currentOccupation ?? "No occupation yet"
dictionaryRepresentation["kWithinRangeMiles"] = withinRangeMiles
dictionaryRepresentation["kBankruptcies"] = bankruptcies
dictionaryRepresentation["kCriminalHistory"] = criminalHistory ?? ""
dictionaryRepresentation["kDriversLicenseNumber"] = driversLicenceNum ?? ""
dictionaryRepresentation["kDriversLicensePicURL"] = driversLicensePicURL ?? ""
dictionaryRepresentation["kEvictionHistory"] = evictionHistory ?? ""
dictionaryRepresentation["kIncome"] = income ?? 0
dictionaryRepresentation["kIsStudent"] = isStudent ?? false
dictionaryRepresentation["kIsVerified"] = isVerified ?? false
dictionaryRepresentation["kPreviousAddress"] = previousAddress ?? ""
dictionaryRepresentation["kReasonsForLeaving"] = reasonForLeaving ?? ""
dictionaryRepresentation["kSchool"] = school ?? ""
dictionaryRepresentation["kStudentID"] = studentID ?? ""
dictionaryRepresentation["kStudentPhotoIdURL"] = studentPhotoIDURL ?? ""
return dictionaryRepresentation;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.