如何在两个视图控制器之间的快速应用程序中传递 json 数据

Posted

技术标签:

【中文标题】如何在两个视图控制器之间的快速应用程序中传递 json 数据【英文标题】:How to pass json data in swift app between two viewcontrollers 【发布时间】:2016-01-20 21:20:47 【问题描述】:

我在传递 json 数据方面需要帮助。我在这个数组中有 json 数据

var TableData:Array< String > = Array < String >()

在这个数组中我有名字、地址、纬度、经度

我在 tableView 中显示名称和地址,但我想在不同的 viewController 中创建带有纬度和经度的注释,具体取决于哪个单元格用户点击(名称,地址,纬度,经度应该相等),所以我问你如果 swift 有一些好的教程,或者你有一些建议。 谢谢。

【问题讨论】:

【参考方案1】:

有许多不同的方法可以将数据从一个 swift 文件传递​​到另一个文件。在有rootViewController的情况下,点击一个按钮打开一个新的ViewController。之前在新的 ViewController 中定义了一个数组,json 解析的数组可以使用 prepareForSegue 方法传递。 在不同的 swift 文件之间传递信息的另一种流行方法是使用AppDelegate。在这里,您可以使用称为 instantiateViewControllerWithIdentifier("identifier") 的方法创建不同 swift 类的实例。这可以通过创建一个故事板变量然后通过 storyboard.instantiateViewControllerWithIdentifier("identifier") 调用此方法来完成。

let newvc = self.storyboard?.instantiateViewControllerWithIdentifier("newvcIdentifier") as! (UIViewController extended class)
newvc.data = TableData
self.navigationController?.pushViewController(newController, animated: true)

其中newvc有一个变量声明如下:

var data: Array <String>!

另一种可以使用的方法是使用单例在所有类之间共享数据。在 swift3 中可以非常简单地创建单例,详情请查看here。

class JSONData 
    var json: Array <String>
    static let sharedInstance = JSONData()

在继续下一个 vc 之前,您应该将数据存储在 sharedInstance 类中。这应该通过覆盖prepare方法来完成。可以在here找到有关此方法的文档@

sharedInstance.json = self.json

在共享实例中设置好数据后,加载新的视图控制器后,可以通过sharedInstance.json访问该数据。

希望这对您有用,如果您有任何其他问题,请发表评论!

【讨论】:

【参考方案2】:

我会这样做:

let newController = self.storyboard?.instantiateViewControllerWithIdentifier("newControllerIdentifier") as! NewControllerClassName
newController.data = array
self.navigationController?.pushViewController(newController, animated: true)

您似乎也在使用逗号分隔的字符串类型数组。 我宁愿创建一个如下所示的变量

var jsonArray:[[String:String]]?

【讨论】:

【参考方案3】:

所以我问你是否有一些好的 swift 教程

http://matteomanferdini.com/how-ios-view-controllers-communicate-with-each-other/

他介绍了简洁的代码和最佳实践。最好在执行任何操作之前阅读此内容。

或者如果你有一些建议

您的代码需要干净。将纬度作为字符串传递,稍后会给您带来问题(转换、代码理解,甚至是错误)。 在这里创建一个新帐户并观看 Bob 叔叔。他的教训很有价值。以上 matteomanferdini 遵循鲍勃叔叔的做法。 https://www.safaribooksonline.com/library/view/clean-code/9780134661742/

【讨论】:

以上是关于如何在两个视图控制器之间的快速应用程序中传递 json 数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SWRevealViewController 在两个视图之间传递数组?

iOS - 如何在通过手动 Segue 链接的两个视图控制器之间传递信息?

如何在由 UITabBarController 分隔的两个视图控制器之间传递数据?

试图在两个视图控制器之间传递数据

在表格视图的 swift 文件之间快速传递数组

如何在两个由UITabBarController分隔的视图控制器之间传递数据?