2016-11-23 16 views
1

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にお気軽にお問い合わせください。

答えて

1

モデルにコードを含めなかったため、述語が正しいかどうかを確認する方法がありません。

私が知ることは、TrainingPlanには同じことをクエリする代わりに使用するexercisesというプロパティがあるということです。代わりにResults

var excercisesFromPlan: List<Excercise>? 

Listを可能とloadExcercisesFromPlanを変更する

あなただけの助けをそれ

func loadExcercisesFromPlan() { 
    excercisesFromPlan = plan?.excercises 
} 
+0

感謝を取得するためにexcercisesFromPlanを変更する必要があります!次回はすぐにモデルを投稿しますが、今は動作します! – Marcel

関連する問題