tableViewの内容に問題があります。私に求めた領域のオブジェクトは表示されません。ここに私のコードは次のとおりです。私はこの変数を宣言したクラスの上部で :UITableViewは、表示する領域オブジェクトを表示しません。
let newPlan = TrainingPlan()
それから私は、運動のオブジェクトをコピーして、このボタンアクションを、持って配列に入れANレルムにこれを追加します。
@IBAction func savePlanAction(_ sender: AnyObject) {
if planNameTextField.text!.isEmpty{
planNameFehlerLabel.isHidden = false
}
else{
newPlan.name = planNameTextField.text!
newPlan.creationDate = NSDate() as Date
let selectedExcercises = loadSelectedExcercises()
if selectedExcercises != nil{
for var i in (0..<selectedExcercises!.count){
excerciseCopies.append(selectedExcercises![i])
do{
try realm.write{
realm.add(excerciseCopies[i])
}
}
catch{
print(error)
}
}
try! realm.write{
realm.add(newPlan)
}
for object in excerciseCopies {
do{
try realm.write{
newPlan.excercises.append(object)
}
}
catch{
print(error)
}
}
performSegue(withIdentifier: "savePlan", sender: self)
}
else{
uebungFehlerLabel.isHidden = false
}
}
}
その後、私は別のViewControllerにnewPlanにオブジェクトを与える:私はこれだけコピーされた配列を変更したいので、私は、これをしなかった
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier! == "savePlan" {
let tct = segue.destination as! TrainingPlanConfTableViewController
tct.plan = newPlan
}
}
は今、次のクラスで私はすべての運動のオブジェクトを表示したいです
class TrainingPlanConfTableViewController: UITableViewController {
//Properties
let realm = try! Realm()
var excercisesFromPlan: Results<Excercise>?{
didSet{
tableView.reloadData()
}
}
var plan: TrainingPlan?
//Lifecycle
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
loadExcercisesFromPlan()
}
//Request
func loadExcercisesFromPlan(){
if plan != nil{
let predicate = NSPredicate(format: "trainingsplan = %@", plan!)
excercisesFromPlan = realm.objects(Excercise.self).filter(predicate)
}
}
//Tableview Funktionen
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if excercisesFromPlan != nil{
return excercisesFromPlan!.count
}
return 0
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: TrainingPlanConfTableViewCell = tableView.dequeueReusableCell(withIdentifier: "PlanConfCell") as! TrainingPlanConfTableViewCell
let excercise = excercisesFromPlan![indexPath.row]
cell.nameLabel.text = excercise.name
return cell
}
}
:のtableViewでコピーされた配列が、からのtableViewは何も表示されません。私はSwiftでかなり新しいですが、私は問題を見つけることができません。述語が間違っていますか?私はどんな助けでも感謝しています!たとえば、データモデルなどの情報が必要な場合は、plsにお気軽にお問い合わせください。
感謝を取得するために
excercisesFromPlan
を変更する必要があります!次回はすぐにモデルを投稿しますが、今は動作します! – Marcel