У меня два ViewController, один называется ComposingOverviewViewController
, а другой CheapestViewController
. Если Пользователь нажимает кнопку, ему / ей;) будет показано CheapestViewController
. Если пользователь нажимает «Выбрать», cheapestBool
становится true
. Сделанный выбор должен быть сохранен в Firebase с параметром bool, установленным как «true», чтобы его можно было проверить впоследствии, должен ли этот выбор отображаться или нет. Даже когда я проверяю это при сохранении данных в firebase, Xcode сообщает мне, что значение на самом деле «истина». Но в Firebase он сохраняется как "false".
Я должен сказать, что для того, чтобы действительно показать что-то в CheapestViewController
, Пользователь должен сначала нажать кнопку check Values
. Поскольку я знаю, что как только View снова переключается с CheapestViewController
на ComposingOverviewViewController
, сгенерированный Selection теряется. Итак, как только Пользователь нажимает «Сохранить» в ComposingOverviewController
, выбор создается снова.
Может быть, он должен что-то с этим делать. Я удалил как можно больше ненужного кода. Надеюсь, это подходит для всех!
Но я на самом деле понятия не имею. Может кому поможет. :)
class ComposingOVerviewViewController: UIViewController {
@IBOutlet weak var cheapestImageView: UIImageView!
var individualimageViewBool = false
var cheapestimageviewBool = false
var efficientImageViewBool = false
var bestImageViewBool = false
var overAllBestImageViewBool = false
var DollarJPerfor:Double?
var projectCreated:String?
let uid = User.current.uid
var indivCompValue = [WeighScore]()
var projCompValue = [ProjCompValue]()
var projectBudget:Int = 0
var projectDifficulty:Double = 0
var projectCreativity:Double = 0
var finalCheapest: [WeighScore] = []
var cheapestBool:Bool?
var freelancerArray = [WeighScore]()
var jobAmountNeeded = [JobNeeded]()
override func viewDidLoad() {
super.viewDidLoad()
UserService.projectjobamount(for: User.current, projectCreated: projectCreated ?? "no Value") { (jobNeeded) in
self.jobAmountNeeded = jobNeeded
}
UserService.individualComposingValues(for: User.current) { (indivCompValue) in
self.freelancerArray = indivCompValue
}
projectSpecification(for: User.current, projectCreated: projectCreated ?? "no Value")
imageHighlights()
}
// MARK: - Highlighten the Images when Team selected
func imageHighlights() {
if individualimageViewBool == true {
individualImageView.image = UIImage(named: "Individual-1")
} else {
individualImageView.image = UIImage(named: "Individual") }
if cheapestimageviewBool == true {
cheapestImageView.image = UIImage(named: "cheapesthigh")
cheapestBool = true
}
else { cheapestImageView.image = UIImage(named: "Cheapest") }
if efficientImageViewBool == true {
efficientImageView.image = UIImage(named: "Efficient-1")
}
else { efficientImageView.image = UIImage(named: "Efficient") }
if bestImageViewBool == true {
bestImageView.image = UIImage(named: "Besthighlight") }
else {bestImageView.image = UIImage(named: "Best") }
if overAllBestImageViewBool == true {
overAllBestImageView.image = UIImage(named: "absolutbesthigh") }
else {overAllBestImageView.image = UIImage(named: "absolutbest") }
}
func getCheapest(member: [WeighScore], neededValue: [JobNeeded]) {
var tempArray1: [WeighScore] = []
for jobAmount in jobAmountNeeded {
let neededValue = jobAmount.jobAmount
tempArray1 = freelancerArray.filter { $0.memberJob == jobAmount.jobName}
let amountInArray = tempArray1.count
if neededValue == 0 { return
} else if neededValue == amountInArray{
tempArray1.sort(by: {$0.normalPrice! < $1.normalPrice!})
for value in tempArray1 {
print(value.memberName as Any)
print(tempArray1.count)
finalBest.append(value) }
} else {
tempArray1.sort(by: {$0.normalPrice! < $1.normalPrice!})
let deletedValue = tempArray1.count - neededValue
print("deleted Value: ", deletedValue)
tempArray1.remove(0..<deletedValue)
for value in tempArray1 {
print(value.memberName as Any)
print(tempArray1.count)
finalCheapest.append(value)
}
}
}
}
// MARK: - Button Function to check Values only
@IBAction func checkValues(_ sender: Any) {
getBest(member: freelancerArray, neededValue: jobAmountNeeded, budgetLevel: projectBudget)
getAbsolutBest(member: freelancerArray, neededValue: jobAmountNeeded)
getMostEfficient(member: freelancerArray, neededValue: jobAmountNeeded)
getCheapest(member: freelancerArray, neededValue: jobAmountNeeded)
}
// MARK: - Save the Team/ Teams
@IBAction func saveAction(_ sender: Any) {
print(cheapestBool)
getCheapest(member: freelancerArray, neededValue: jobAmountNeeded)
for value in finalCheapest {
let finalCheapest = "finalCheapest"
PostService.proposedTeams(projectCreated: projectCreated ?? "No Value", teamType: finalCheapest, memberJob: value.memberJob ?? "no value", memberName: value.memberName ?? "no Value", memberID: value.memberID ?? "no Value", ajp: value.ajp ?? 999, crea: value.crea ?? 999, ijr: value.ijr ?? 999, qpa: value.qpa ?? 999, coj: value.coj ?? 999, los: value.los ?? 999, iracc: value.iracc ?? 999, dph: value.dph ?? 999, normalPrice: value.normalPrice ?? 999, sumFreelanceRating: value.sumFreelanceRating ?? 999, priceJPerfScore: value.priceJPerfScore ?? 999, teamSelected: cheapestBool ?? false)
}
}
// MARK: - Pass data to specific ViewController of Team Alternatives
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "teamToCheapest" {
let destVC = segue.destination as! CheapestViewController
print(sentcheapestTeam.count)
destVC.finalCheapest = finalCheapest
}
}
// MARK: - Go to specific Teams
@IBAction func cheapest(_ sender: Any) {
performSegue(withIdentifier: "teamToCheapest", sender: self)
}
}
// MARK: - Extensions
extension Array {
mutating func remove(_ range: Range<Int>) -> Array {
let values = Array(self[range])
self.removeSubrange(range)
return values
}
}
class CheapestViewController: UIViewController {
// MARK: - Properties
@IBOutlet weak var tableView: UITableView!
// var VC = ComposingOVerviewViewController()
var finalCheapest = [WeighScore]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "cheapestToOverview" {
let destVC = segue.destination as! ComposingOVerviewViewController
destVC.cheapestBool = true
}
}
@IBAction func chooseCheapest(_ sender: Any) {
print(finalCheapest.count)
for value in finalCheapest {
print(value.memberJob)
}
performSegue(withIdentifier: "cheapestToOverview", sender: self)
}
}
class WeighScore {
var key: String?
let memberJob: String?
let memberName: String?
let memberID:String?
let ajp: Double?
let crea:Double?
let ijr:Double?
let qpa:Double?
let coj:Double?
let los:Double?
let iracc:Double?
let dph:Double?
let normalPrice:Double?
var sumFreelanceRating:Double?
let priceJPerfScore:Double?
init(ajp: Double, crea:Double, ijr:Double, qpa:Double, coj:Double, los:Double, iracc:Double, dph:Double, sumFreelanceRating:Double, normalPrice:Double, memberJob: String, memberName: String, priceJPerfScore:Double, memberID:String) {
self.ajp = ajp
self.crea = crea
self.ijr = ijr
self.qpa = qpa
self.coj = coj
self.los = los
self.iracc = iracc
self.dph = dph
self.sumFreelanceRating = sumFreelanceRating
self.normalPrice = normalPrice
self.memberName = memberName
self.memberJob = memberJob
self.priceJPerfScore = priceJPerfScore
self.memberID = memberID
}
var dictValue: [String: Any] {
return ["memberName" : memberName,
"memberJob" : memberJob,
"ajp" : ajp,
"crea" : crea,
"ijr" : ijr,
"qpa" : qpa,
"coj" : coj,
"los" : los,
"iracc" : iracc,
"dph" : dph,
"normalPrice": normalPrice,
"sumFreelanceRating" : sumFreelanceRating,
"priceJPerfScore": priceJPerfScore,
"memberID": memberID,
]
}
init?(snapshot: DataSnapshot) {
guard let dict = snapshot.value as? [String: Any],
let memberJob = dict["memberJob"] as? String,
let memberName = dict["memberName"] as? String,
let ajp = dict["ajp"] as? Double,
let crea = dict["crea"] as? Double,
let ijr = dict["ijr"] as? Double,
let qpa = dict["qpa"] as? Double,
let coj = dict["coj"] as? Double,
let los = dict["los"] as? Double,
let iracc = dict["iracc"] as? Double,
let dph = dict["dph"] as? Double,
let normalPrice = dict["normalPrice"] as? Double,
let sumFreelanceRating = dict["sumFreelanceRating"] as? Double,
let priceJPerfScore = dict["priceJPerfScore"] as? Double,
let memberID = dict["memberID"] as? String
else {return nil}
self.memberJob = memberJob
self.memberName = memberName
self.ajp = ajp
self.crea = crea
self.ijr = ijr
self.qpa = qpa
self.coj = coj
self.los = los
self.iracc = iracc
self.dph = dph
self.normalPrice = normalPrice
self.sumFreelanceRating = sumFreelanceRating
self.priceJPerfScore = priceJPerfScore
self.memberID = memberID
}
}
class TeamSetting {
var key: String?
let memberJob: String?
let memberName: String?
let memberID:String?
let ajp: Double?
let crea:Double?
let ijr:Double?
let qpa:Double?
let coj:Double?
let los:Double?
let iracc:Double?
let dph:Double?
let normalPrice:Double?
var sumFreelanceRating:Double?
let priceJPerfScore:Double?
var teamSelected: Bool?
init(ajp: Double, crea:Double, ijr:Double, qpa:Double, coj:Double, los:Double, iracc:Double, dph:Double, sumFreelanceRating:Double, normalPrice:Double, memberJob: String, memberName: String, priceJPerfScore:Double, memberID:String, teamSelected: Bool) {
self.ajp = ajp
self.crea = crea
self.ijr = ijr
self.qpa = qpa
self.coj = coj
self.los = los
self.iracc = iracc
self.dph = dph
self.sumFreelanceRating = sumFreelanceRating
self.normalPrice = normalPrice
self.memberName = memberName
self.memberJob = memberJob
self.priceJPerfScore = priceJPerfScore
self.memberID = memberID
self.teamSelected = teamSelected
}
var dictValue: [String: Any] {
return ["memberName" : memberName,
"memberJob" : memberJob,
"ajp" : ajp,
"crea" : crea,
"ijr" : ijr,
"qpa" : qpa,
"coj" : coj,
"los" : los,
"iracc" : iracc,
"dph" : dph,
"normalPrice": normalPrice,
"sumFreelanceRating" : sumFreelanceRating,
"priceJPerfScore": priceJPerfScore,
"memberID": memberID,
"teamSelected": teamSelected]
}
init?(snapshot: DataSnapshot) {
guard let dict = snapshot.value as? [String: Any],
let memberJob = dict["memberJob"] as? String,
let memberName = dict["memberName"] as? String,
let ajp = dict["ajp"] as? Double,
let crea = dict["crea"] as? Double,
let ijr = dict["ijr"] as? Double,
let qpa = dict["qpa"] as? Double,
let coj = dict["coj"] as? Double,
let los = dict["los"] as? Double,
let iracc = dict["iracc"] as? Double,
let dph = dict["dph"] as? Double,
let normalPrice = dict["normalPrice"] as? Double,
let sumFreelanceRating = dict["sumFreelanceRating"] as? Double,
let priceJPerfScore = dict["priceJPerfScore"] as? Double,
let memberID = dict["memberID"] as? String,
let teamSelected = dict["teamSelected"] as? Bool
else {return nil}
self.memberJob = memberJob
self.memberName = memberName
self.ajp = ajp
self.crea = crea
self.ijr = ijr
self.qpa = qpa
self.coj = coj
self.los = los
self.iracc = iracc
self.dph = dph
self.normalPrice = normalPrice
self.sumFreelanceRating = sumFreelanceRating
self.priceJPerfScore = priceJPerfScore
self.memberID = memberID
self.teamSelected = teamSelected
}
}