這是我第一次發佈問題。我認爲在我的第一篇文章中,我沒有說清楚,我真正需要知道的是如何讓用戶將對象分配給與其相關的其他對象。目前的這個選擇並存儲來自桌面視圖的核心數據關係
contract.wageClass = wageClassIDLabel.text
變化給錯誤的變化「不能分配型‘字符串’的價值型‘的NSSet’。
我有兩個核心數據實體,合同和WageClass,兩者的關係是-many(合同可以有很多工資類別,工資類別可以屬於多個合同)我沒有問題允許用戶添加到工資類別和合同的商店,我只是無法弄清楚如何允許用戶選擇實際的關聯數據
注意:我用編輯器 - >創建NSMangedObject的子類而不是Codegen我可以看到並編輯這些類。
這是用戶輸入的數據來創建一個工資類視圖控制器:
import UIKit
class AddWCViewController: UIViewController {
@IBOutlet weak var nameField: UITextField!
@IBOutlet weak var numberOfWorkersField: UITextField!
@IBOutlet weak var wagePerHourField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func submitButtonTapped(_ sender: AnyObject) {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let wageClass = WageClass(context: context)
wageClass.name = nameField.text!
wageClass.numberOfWorkers = (numberOfWorkersField.text! as NSString).doubleValue
let numWorkers = wageClass.numberOfWorkers
wageClass.wagesPerHour = (wagePerHourField.text! as NSString).doubleValue
let classPerHour = wageClass.wagesPerHour
wageClass.classTotalWagesPerHour = numWorkers * classPerHour
//Save it
(UIApplication.shared.delegate as! AppDelegate).saveContext()
navigationController?.popViewController(animated: true)
}
}
我知道我需要使用類擴展addToContract但我怎麼讓用戶選擇通過合同UI?我如何讓用戶選擇多個合同?
更新:
我加了一個實現代碼如下並將其設置爲允許在編輯多個選擇。現在我正在尋找一種方法來保存選擇。
import UIKit
class SelectWCTableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var selectTableView: UITableView!
var wageClasses: [WageClass] = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
selectTableView.dataSource = self
selectTableView.delegate = self
selectTableView.allowsMultipleSelectionDuringEditing = true
selectTableView.setEditing(true, animated: false)
}
override func viewWillAppear(_ animated: Bool) {
//get data from Core Data
getData()
//reload tableview
selectTableView.reloadData()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return wageClasses.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "ElementCell")
let wageClass = wageClasses[indexPath.row]
cell.textLabel?.text = "\(wageClass.name!)"
cell.detailTextLabel?.text = "\(wageClass.numberOfWorkers) workers @\(wageClass.wagesPerHour)/per hour =\(wageClass.classTotalWagesPerHour) total paid"
return cell
}
func getData() {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
do {
wageClasses = try context.fetch(WageClass.fetchRequest())
// var totalWagesPaidPerClass = 0
// for wageClass in wageClasses {
// let people = wageClass.valueForKey("numberOfWorkers") as! Int
// let hours = wageClass.valueForKey("wagePerHour") as! Int
// totalWagesPaidPerClass += people * hours
// }
}
catch {
print("Fetching Failed")
}
}
}
感謝您的回答,但我的問題是關於如何讓用戶通過UI選擇合同。 – camelCaseUpInYourFace
你問用戶界面應該是什麼樣子?或者應該如何實現UI? – user1046037
應該如何實現UI。 UIPickerView?你如何一次選擇多個? – camelCaseUpInYourFace