首页 > 解决方案 > 如何在 Swift 的另一个 ViewController 中打印选定单元格的数据?

问题描述

我不知道如何解决这个逻辑问题。这是我需要的:在一个数组中,我有客户姓名。我在 tableView 中打印这些名称。当点击客户名称时,您将被重定向到包含所选客户订单的其他 viewController。

问题是,我必须将这些数据存储在核心数据中。所以客户的名字在一个数组中,订单也在一个数组中。但我不知道如何将两个不同的数组相互分配。

基本上:当在 tableView 中点击客户名称时,它必须推送到下一个具有该点击客户订单的 viewController。

我是否必须对数据库设计做一些事情或将客户数组分配给订单数组?我真的很困惑。

等待您的建议。谢谢!!!

标签: iosarraysswiftcore-datatableview

解决方案


如果我理解正确。只需执行以下操作。

例如:- 你有并Entity命名了OrderInfo并且在里面你有四个Attributes customerName、address、orderID 和 city

所以你所做的只是使用你的数组和名字来列出tableView. 那么逻辑就很简单了,比如使用didSelectRowAt,就可以得到选中的名字。将此名称传递给 nextVC 之类的。我会storyBoardID用来做那个[你也可以用你的方式通过这个]。

第一个VC:

     let objNextVC = self.storyboard?.instantiateViewController(withIdentifier: "NextVC") as! NextVC
    objNextVC.strName = your_selected_NameHere
    self.navigationController?.pushViewController(objNextVC, animated: true)

下一个VC:

var strName:String = String()

现在逻辑开始了,我假设您还在 CoreData [名称数组中的名称] 中存储了相同的名称。如果不是,我建议你这样做以减少你的额外努力。

现在在NextVC中只需从strName顶部声明的名称字符串中获取

并应用以下代码来获取数据。

CoreData 匹配和获取查询:

func update(){
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

    let request = NSFetchRequest<NSFetchRequestResult>(entityName: "OrderInfo")
    do{
        let results = try context.fetch(request)

        if results.count > 0{
            for result in results as! [NSManagedObject]{
                if let name = result.value(forKey: "customerName") as? String{
                    if name == strName{
                        print(result)
                        let name = result.value(forKey: "customerName")
                        let address = result.value(forKey: "address")
                        let orderID = result.value(forKey: "orderID")
                        let city = result.value(forKey: "city")

                        //Use it the way you like
                        do{
                            try context.save()
                            self.navigationController?.popViewController(animated: true)
                        }
                        catch{
                        }
                    }
                }
            }
        }
    }
    catch{
    }
}

如果一切都很好,如果数据在那里。你会得到你想要的输出。

干杯!


推荐阅读