如何在 Swift 的另一个 ViewController 中打印选定的单元格数据?

Posted

技术标签:

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

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

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

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

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

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

【问题讨论】:

上传您的 tableview cellforrow、didselect 和 prpareforsegue(如果您使用)。没有上传代码的人如何帮助你 【参考方案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
    

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

干杯!

【讨论】:

以上是关于如何在 Swift 的另一个 ViewController 中打印选定的单元格数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift中打开动画完成的另一个视图?

如何从 Swift SpriteKit 中的另一个 SKScene 访问变量

如何将数据从 Playground 页面传递到 Swift Playgrounds 中的另一个 Playground 页面?

如何从 SWIFT 3 中的另一个 ViewController 检查 UISwitch 的状态?

如何将 JSON 响应发送到 Swift 3 中的另一个视图

如何在 swift 4 中的另一个表视图控制器中获取该表视图单元格中的文本字段文本?