【发布时间】:2020-10-12 00:58:21
【问题描述】:
我有一个调查表视图,如图所示。我想将每一行的最终值保存在特定索引处。例如,“ajkpXc”代表第一行,用户必须权衡“能力工作知识和生产力”与“创造力”相比的重要性。要正确使用这些信息,显然我必须将其存储到特定索引中。
我尝试实现的所有解决方案都没有奏效。 我希望我的目标很明确,并且你们中的一些人可以在我提供代码时找到可行的解决方案。 :)
顺便说一句:我制作了一个数组和一个字典,所以你找出最适合我的用途的东西。
感谢您的帮助!!!
class AHPRatingPriorityViewController: UIViewController {
// MARK: - Properties
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var saveButton: UIButton!
@IBOutlet weak var errorLabel: UILabel!
var userID:String?
var currentValue:Int?
private var ratingStorage = [Int](repeating: 0, count: 28)
private static var rowsCount = 28
let step : Float = 1
let leftItems = ["Ability,\n Job Knowledge,\n Productivity",
"Ability, Job Knowledge, Productivity",
"Ability, Job Knowledge, Productivity",
"Ability, Job Knowledge, Productivity",
"Ability, Job Knowledge, Productivity",
"Ability, Job Knowledge, Productivity",
"Ability, Job Knowledge, Productivity",
"Creativity",
"Creativity",
"Creativity",
"Creativity",
"Creativity",
"Creativity",
"initiative, judgment, responsibility",
"initiative, judgment, responsibility",
"initiative, judgment, responsibility",
"initiative, judgment, responsibility",
"initiative, judgment, responsibility",
"quality of work, planning, accuracy",
"quality of work, planning, accuracy",
"quality of work, planning, accuracy",
"quality of work, planning, accuracy",
"Organization and Job Commitment",
"Organization and Job Commitment",
"Organization and Job Commitment",
"Organization and Supervisor Loyalty",
"Organization and Supervisor Loyalty",
"interpersonal relationships,\n attitude,\n communication skills,\n cooperation"]
let rightItems = ["Creativity",
"Initiative, Judgment, Responsibility",
"Quality of work, planning, accuracy",
"Organization and Job Commitment",
"Organization and Supervisor Loyalty",
"interpersonal relationships, attitude, communication skills, cooperation",
"dependability, punctuality, honesty",
"initiative, judgment, responsibility",
"quality of work, planning, accuracy",
"Organization and Job Commitment",
"Organization and Supervisor Loyalty",
"interpersonal relationships, attitude communication skills, cooperation",
"dependability, punctuality, honesty",
"Quality of work, planning, accuracy",
"Organization and Job Commitment",
"Organization and Supervisor Loyalty",
"interpersonal relationships, attitude, communication skills, cooperation",
"dependability, punctuality, honesty",
"Organization and Job Commitment",
"Organization and Supervisor Loyalty",
"interpersonal relationships, attitude, communication skills, cooperation",
"dependability, punctuality, honesty",
"Organization and Supervisor Loyalty",
"interpersonal relationships, attitude, communication skills, cooperation",
"dependability, punctuality, honesty",
"interpersonal relationships, attitude, communication skills, cooperation",
"dependability, punctuality, honesty",
"dependability, punctuality, honesty"]
override func viewDidLoad() {
super.viewDidLoad()
setUpElements()
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
for i in 0..<AHPRatingPriorityViewController.rowsCount {
ratingStorage[i] = Int(i) / 27 * 18
}
}
// MARK: - Element Style
func setUpElements() {
// Hide the error label
errorLabel.alpha = 0
}
func configureTableView() {
// remove separators for empty cells
tableView.tableFooterView = UIView()
// remove separators from cells
tableView.separatorStyle = .none
}
// Error Handling for save
func showError(_ message:String) {
errorLabel.text = message
errorLabel.alpha = 1
}
func validateFields() -> String? {
return nil
}
@IBAction func saveRating(_ sender: Any) {
let user = Auth.auth().currentUser
if let user = user {
let uid = user.uid
userID = uid
// Validate the fields
let error = validateFields()
if error != nil {
// There is something wrong with the fields, show error message
print("an error occured")
} else {
var AHPPriorities: [String: Int] = ["ajkpXc": 0,"ajkpXijr": 0,"ajkpXqpa": 0,"ajkpXcoj": 0,"ajkpXlos": 0,"ajkpXiracc": 0, "ajkpXdph": 0,"cXijr": 0,"cXqpa": 0, "cXcoj": 0, "cXlos": 0, "cXiracc": 0,"cXdph": 0, "ijrXqpa": 0, "ijrXcoj": 0,"ijrXlos": 0,"ijrXiracc": 0,"ijrXdph": 0, "qpaXcoj": 0, "qpaXlos": 0, "qpaXiracc": 0, "qpaXdph": 0,"cojXlos": 0, "cojXiracc": 0,"cojXdph": 0, "losXiracc": 0, "losXdph": 0, "iraccXdph": 0]
let ajkpXc = ratingStorage[0]
let ajkpXijr = ratingStorage[1]
let ajkpXqpa = ratingStorage[2]
let ajkpXcoj = ratingStorage[3]
let ajkpXlos = ratingStorage[4]
let ajkpXiracc = ratingStorage[5]
let ajkpXdph = ratingStorage[6]
let cXijr = ratingStorage[7]
let cXqpa = ratingStorage[8]
let cXcoj = ratingStorage[9]
let cXlos = ratingStorage[10]
let cXiracc = ratingStorage[11]
let cXdph = ratingStorage[12]
let ijrXqpa = ratingStorage[13]
let ijrXcoj = ratingStorage[14]
let ijrXlos = ratingStorage[15]
let ijrXiracc = ratingStorage[16]
let ijrXdph = ratingStorage[17]
let qpaXcoj = ratingStorage[18]
let qpaXlos = ratingStorage[19]
let qpaXiracc = ratingStorage[20]
let qpaXdph = ratingStorage[21]
let cojXlos = ratingStorage[22]
let cojXiracc = ratingStorage[23]
let cojXdph = ratingStorage[24]
let losXiracc = ratingStorage[25]
let losXdph = ratingStorage[26]
let iraccXdph = ratingStorage[27]
GLajkpXc = ajkpXc
GLajkpXijr = ajkpXijr
GLajkpXqpa = ajkpXqpa
GLajkpXcoj = ajkpXcoj
GLajkpXlos = ajkpXlos
GLajkpXiracc = ajkpXiracc
GLajkpXdph = ajkpXdph
GLcXijr = cXijr
GLcXqpa = cXqpa
GLcXcoj = cXcoj
GLcXlos = cXlos
GLcXiracc = cXiracc
GLcXdph = cXdph
GLijrXqpa = ijrXqpa
GLijrXcoj = ijrXcoj
GLijrXlos = ijrXlos
GLijrXiracc = ijrXiracc
GLijrXdph = ijrXdph
GLqpaXcoj = qpaXcoj
GLqpaXlos = qpaXlos
GLqpaXiracc = qpaXiracc
GLqpaXdph = qpaXdph
GLcojXlos = cojXlos
GLcojXiracc = cojXiracc
GLcojXdph = cojXdph
GLlosXiracc = losXiracc
GLlosXdph = losXdph
GLiraccXdph = iraccXdph
guard let firUser = Auth.auth().currentUser else {return}
UserService.ahpPref(firUser) { (user) in
guard let user = user else {
// handle error
return
}
}
//
//} else { print("Please log out and log in again")}
// for item in itemsForRating {
// print("Thats the item: \(item)")
// }
//
for rating in ratingStorage {
print("Thats the rating: \(rating)")
}
//
// print("Thats the member ID: ", memberID)
}
}
}
}
// MARK: - Extension
extension AHPRatingPriorityViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return leftItems.count
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let ratingItemLeft = leftItems[indexPath.row]
let ratingItemRight = rightItems[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "RatingPriorityTableViewCell", for: indexPath) as! RatingPriorityTableViewCell
// cell.update()
cell.leftItems.text = ratingItemLeft
cell.rightItems.text = ratingItemRight
cell.itemSlider.tag = indexPath.row
cell.itemSlider.addTarget(self, action: #selector(AHPRatingPriorityViewController.sliderChange(sender:)), for: .valueChanged)
return cell
}
@objc func sliderChange(sender: UISlider) {
// Snap the slider
let roundedStepValue = round(sender.value / step) * step
sender.value = roundedStepValue
// Get the sliders value
currentValue = Int(sender.value)
let row = sender.tag // get slider's row in table
for i in 0..<leftItems.count {
ratingStorage.insert(currentValue!, at: i)
}
print(#function)
// for rating in ratingStorage {
// print("Slider has a value of \(currentValue)")
// }
}
}
// MARK: - UITableViewDelegate
extension AHPRatingPriorityViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 196
}
}
import Foundation
import UIKit
import FirebaseDatabase.FIRDataSnapshot
class AHPPriority {
var key: String?
let ajkpXc: Int
let ajkpXijr: Int
let ajkpXqpa: Int
let ajkpXcoj: Int
let ajkpXlos: Int
let ajkpXiracc: Int
let ajkpXdph: Int
let cXijr: Int
let cXqpa: Int
let cXcoj: Int
let cXlos: Int
let cXiracc: Int
let cXdph: Int
let ijrXqpa: Int
let ijrXcoj: Int
let ijrXlos: Int
let ijrXiracc: Int
let ijrXdph: Int
let qpaXcoj: Int
let qpaXlos: Int
let qpaXiracc: Int
let qpaXdph: Int
let cojXlos: Int
let cojXiracc: Int
let cojXdph: Int
let losXiracc: Int
let losXdph: Int
let iraccXdph: Int
init(ajkpXc: Int, ajkpXijr: Int, ajkpXqpa: Int, ajkpXcoj: Int, ajkpXlos: Int, ajkpXiracc: Int, ajkpXdph: Int, cXijr: Int, cXqpa: Int, cXcoj: Int, cXlos: Int, cXiracc: Int, cXdph: Int, ijrXqpa: Int, ijrXcoj: Int, ijrXlos: Int, ijrXiracc: Int, ijrXdph: Int, qpaXcoj: Int, qpaXlos: Int, qpaXiracc: Int, qpaXdph: Int, cojXlos: Int, cojXiracc: Int, cojXdph: Int, losXiracc: Int, losXdph: Int, iraccXdph: Int) {
self.ajkpXc = ajkpXc
self.ajkpXijr = ajkpXijr
self.ajkpXqpa = ajkpXqpa
self.ajkpXcoj = ajkpXcoj
self.ajkpXlos = ajkpXlos
self.ajkpXiracc = ajkpXiracc
self.ajkpXdph = ajkpXdph
self.cXijr = cXijr
self.cXqpa = cXqpa
self.cXcoj = cXcoj
self.cXlos = cXlos
self.cXiracc = cXiracc
self.cXdph = cXdph
self.ijrXqpa = ijrXqpa
self.ijrXcoj = ijrXcoj
self.ijrXlos = ijrXlos
self.ijrXiracc = ijrXiracc
self.ijrXdph = ijrXdph
self.qpaXcoj = qpaXcoj
self.qpaXlos = qpaXlos
self.qpaXiracc = qpaXiracc
self.qpaXdph = qpaXdph
self.cojXlos = cojXlos
self.cojXiracc = cojXiracc
self.cojXdph = cojXdph
self.losXiracc = losXiracc
self.losXdph = losXdph
self.iraccXdph = iraccXdph
}
var dictValue: [String: Any] {
let createdAgo = kSecAttrCreationDate
return [
"created_ago": createdAgo,
"ajkpXc": ajkpXc,
"ajkpXijr ": ajkpXijr,
"ajkpXqpa": ajkpXqpa,
"ajkpXcoj": ajkpXcoj,
"ajkpXlos ": ajkpXlos,
"ajkpXiracc ": ajkpXiracc,
"ajkpXdph": ajkpXdph,
"cXijr": cXijr,
"cXqpa": cXqpa,
"cXcoj": cXcoj,
"cXlos": cXlos,
"cXiracc": cXiracc,
"cXdph": cXdph,
"ijrXqpa": ijrXqpa,
"ijrXcoj": ijrXcoj,
"ijrXlos": ijrXlos,
"ijrXiracc": ijrXiracc,
"ijrXdph": ijrXdph,
"qpaXcoj": qpaXcoj,
"qpaXlos": qpaXlos,
"qpaXiracc": qpaXiracc,
"qpaXdph": qpaXdph,
"cojXlos": cojXlos,
"cojXiracc": cojXiracc,
"cojXdph": cojXdph,
"losXiracc": losXiracc,
"losXdph": losXdph,
"iraccXdph": iraccXdph ]
}
init?(snapshot: DataSnapshot) {
guard let dict = snapshot.value as? [String: Any],
let ajkpXc = dict["ajkpXc"] as? Int,
let ajkpXijr = dict["ajkpXijr"] as? Int,
let ajkpXqpa = dict["ajkpXqpa"] as? Int,
let ajkpXcoj = dict["ajkpXcoj"] as? Int,
let ajkpXlos = dict["ajkpXlos"] as? Int,
let ajkpXiracc = dict["ajkpXiracc"] as? Int,
let ajkpXdph = dict["ajkpXdph"] as? Int,
let cXijr = dict["cXijr"] as? Int,
let cXqpa = dict["cXqpa"] as? Int,
let cXcoj = dict["cXcoj"] as? Int,
let cXlos = dict["cXlos"] as? Int,
let cXiracc = dict["cXiracc"] as? Int,
let cXdph = dict["cXdph"] as? Int,
let ijrXqpa = dict["ijrXqpa"] as? Int,
let ijrXcoj = dict["ijrXcoj"] as? Int,
let ijrXlos = dict["ijrXlos"] as? Int,
let ijrXiracc = dict["ijrXiracc"] as? Int,
let ijrXdph = dict["ijrXdph"] as? Int,
let qpaXcoj = dict["qpaXcoj"] as? Int,
let qpaXlos = dict["qpaXlos"] as? Int,
let qpaXiracc = dict["qpaXiracc"] as? Int,
let qpaXdph = dict["qpaXdph"] as? Int,
let cojXlos = dict["cojXlos"] as? Int,
let cojXiracc = dict["cojXiracc"] as? Int,
let cojXdph = dict["cojXdph"] as? Int,
let losXiracc = dict["losXiracc"] as? Int,
let losXdph = dict["losXdph"] as? Int,
let iraccXdph = dict["iraccXdph"] as? Int
else {return nil}
self.ajkpXc = ajkpXc
self.ajkpXijr = ajkpXijr
self.ajkpXqpa = ajkpXqpa
self.ajkpXcoj = ajkpXcoj
self.ajkpXlos = ajkpXlos
self.ajkpXiracc = ajkpXiracc
self.ajkpXdph = ajkpXdph
self.cXijr = cXijr
self.cXqpa = cXqpa
self.cXcoj = cXcoj
self.cXlos = cXlos
self.cXiracc = cXiracc
self.cXdph = cXdph
self.ijrXqpa = ijrXqpa
self.ijrXcoj = ijrXcoj
self.ijrXlos = ijrXlos
self.ijrXiracc = ijrXiracc
self.ijrXdph = ijrXdph
self.qpaXcoj = qpaXcoj
self.qpaXlos = qpaXlos
self.qpaXiracc = qpaXiracc
self.qpaXdph = qpaXdph
self.cojXlos = cojXlos
self.cojXiracc = cojXiracc
self.cojXdph = cojXdph
self.losXiracc = losXiracc
self.losXdph = losXdph
self.iraccXdph = iraccXdph
}
}
struct UserService {
static let dateFormatter = ISO8601DateFormatter()
static func ahpPref(_ firUser: FIRUser, completion: @escaping (User?) -> Void) {
let timestamp = dateFormatter.string(from: Date())
let ref = Database.database().reference().child("Leader").child(firUser.uid).child("AHPPriority").child(timestamp)
let ahpPriorities = [
"ajkpXc": GLajkpXc,
"ajkpXijr ": GLajkpXijr,
"ajkpXqpa": GLajkpXqpa,
"ajkpXcoj": GLajkpXcoj,
"ajkpXlos ": GLajkpXlos,
"ajkpXiracc ": GLajkpXiracc,
"ajkpXdph": GLajkpXdph,
"cXijr": GLcXijr,
"cXqpa": GLcXqpa,
"cXcoj": GLcXcoj,
"cXlos": GLcXlos,
"cXiracc": GLcXiracc,
"cXdph": GLcXdph,
"ijrXqpa": GLijrXqpa,
"ijrXcoj": GLijrXcoj,
"ijrXlos": GLijrXlos,
"ijrXiracc": GLijrXiracc,
"ijrXdph": GLijrXdph,
"qpaXcoj": GLqpaXcoj,
"qpaXlos": GLqpaXlos,
"qpaXiracc": GLqpaXiracc,
"qpaXdph": GLqpaXdph,
"cojXlos": GLcojXlos,
"cojXiracc": GLcojXiracc,
"cojXdph": GLcojXdph,
"losXiracc": GLlosXiracc,
"losXdph": GLlosXdph,
"iraccXdph": GLiraccXdph ]
ref.setValue(ahpPriorities) { (error, ref) in
if let error = error {
assertionFailure(error.localizedDescription)
return completion(nil)
}
ref.observeSingleEvent(of: .value, with: { (snapshot) in
let user = User(snapshot: snapshot)
completion(user)
})
}
}
}
【问题讨论】:
-
分享你的代码,这样我就可以尝试得到你想要的解决方案。
标签: ios arrays swift uitableview uislider