【问题标题】:How to print the selected cell's datas in another ViewController in Swift?如何在 Swift 的另一个 ViewController 中打印选定的单元格数据?
【发布时间】:2018-05-02 01:09:54
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 上传您的 tableview cellforrow、didselect 和 prpareforsegue(如果您使用)。没有上传代码的人如何帮助你

标签: ios arrays swift core-data tableview


【解决方案1】:

如果我正确理解了您的问题,您会发现很难将每个客户与相应的订单数组联系起来。 为此,您有一个客户数组,并创建一个字典,其键是客户名称,值是 orderArray。因此,如果您在表格视图中点击某个客户,您会从字典中获取相应的订单数组,您可以将其传递给下一个视图控制器。

【讨论】:

    【解决方案2】:

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

    例如:- 你有和Entity 命名为 OrderInfo,在里面你有四个 AttributescustomerName、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)
    

    NextVC:

    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{
        }
    }
    

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

    干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多