Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Can';t将领域数据从tableViewController传递到viewController_Ios_Swift_Realm - Fatal编程技术网

Ios Can';t将领域数据从tableViewController传递到viewController

Ios Can';t将领域数据从tableViewController传递到viewController,ios,swift,realm,Ios,Swift,Realm,我很难将领域对象的数据从tableViewController传递到viewController。我想从表中选择一个对象,并在下面的viewController中使用该对象的数据。我在这里很难找到处理领域对象的资源,而不仅仅是传递字符串之类的东西。任何援助都将是巨大的 以下是我尝试创建第二个视图的segue函数的TableViewController: class WorkoutController: UITableViewController { override func view

我很难将领域对象的数据从tableViewController传递到viewController。我想从表中选择一个对象,并在下面的viewController中使用该对象的数据。我在这里很难找到处理领域对象的资源,而不仅仅是传递字符串之类的东西。任何援助都将是巨大的

以下是我尝试创建第二个视图的segue函数的TableViewController:

class WorkoutController: UITableViewController {
    
override func viewDidLoad() {
    super.viewDidLoad()
    
}

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}


override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return DBHelper.shared.getWorkout().count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    if cell == nil {
        cell = UITableViewCell(style: .default, reuseIdentifier: "cell")
    }
    let muscle = DBHelper.shared.getWorkout()[indexPath.row]
    cell.textLabel?.text = muscle
    return cell
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let workoutDetailVC = segue.destination as! WorkoutDetail
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let name = DBHelper.shared.getWorkout()[indexPath.row]
        
        workoutDetailVC.receivedName = name
    }
}

}
下面是WorkoutDetail类,它应该接收并显示数据:

class WorkoutDetail: UIViewController {

@IBOutlet weak var muscleLabel: UILabel!

var receivedName = ""

override func viewDidLoad() {
    super.viewDidLoad()

    muscleLabel.text = receivedName
}

}
下面是上面引用的getWorkout()函数:

func getWorkout()-> [String] {
    var musclesName = [String]()
    let storedExercise = realm.objects(Workout1.self)
    for exercise in storedExercise {
        musclesName.append(exercise.exercise)
    }
    return musclesName
}

我在这方面遇到了实际困难,非常感谢您的帮助。

获取
didSelectRowAt
退出
prepare

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    if cell == nil {
        cell = UITableViewCell(style: .default, reuseIdentifier: "cell")
    }
    let muscle = DBHelper.shared.getWorkout()[indexPath.row]
    cell.textLabel?.text = muscle
    return cell
}


func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let name = DBHelper.shared.getWorkout()[indexPath.row]
    self.performSegue(withIdentifier:"SegueName",sender:name)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let workoutDetailVC = segue.destination as! WorkoutDetail
    workoutDetailVC.receivedName = sender as! String
}

感谢您的回复,我已将此添加到我的代码中,它已生成并运行,但当我尝试在模拟器中执行此步骤时,我收到错误“无法将'UITableViewCell'类型的值强制转换为'NSString'。它是'self.performsgue()'代码段中的
,sender:name)
而不是
,sender:self)
?因为这是我在我的项目中所拥有的。我对您的响应所做的唯一更改是在
performsgue
Yes中的functionyes处向didSelectRow添加“override”,这是我所拥有的,但我仍然收到错误,当我尝试segue时,还有一个“Thread 1:SIGABRT”错误。您没有将领域对象传递给第二个视图控制器。您正在传递一个字符串,因此它的处理方式与传递任何其他字符串一样。另外,为什么在
prepare(用于段
)中有一个tableview委托函数
didSelectRow:at