我需要帮助传递json数据。我在这个数组中有json数据
var TableData:Array< String > = Array < String >()
在此数组中,我有姓名,地址,纬度,经度
我在tableView中显示名称和地址,但我想在不同的viewController中创建具有纬度和经度的注释,具体取决于哪个单元格用户点击(名称,地址,纬度,经度等于),所以我问你如果在swift中有一些很好的教程,或者你有一些建议。 谢谢。
答案 0 :(得分:1)
有许多不同的方法可以将数据从一个swift文件传递到另一个swift文件。如果有一个rootViewController并且单击了一个按钮来打开一个新的ViewController。之前在新的ViewController中定义了一个数组,可以使用prepareForSegue方法传递json解析数组。
另一种在不同swift文件之间传递信息的流行方法是使用AppDelegate
。在这里,您可以使用称为instantiateViewControllerWithIdentifier("identifier")
的方法创建不同swift类的实例。这可以通过创建一个storyboard变量然后通过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
访问此数据。
希望这对您有用,如果您有任何其他问题,请发表评论!
答案 1 :(得分:0)
我会做这样的事情:
let newController = self.storyboard?.instantiateViewControllerWithIdentifier("newControllerIdentifier") as! NewControllerClassName
newController.data = array
self.navigationController?.pushViewController(newController, animated: true)
您还可以使用以逗号分隔的字符串类型数组。 我宁愿创建一个如下所示的变量
var jsonArray:[[String:String]]?
答案 2 :(得分:0)
所以我问你是否在swift中有一些很好的教程
http://matteomanferdini.com/how-ios-view-controllers-communicate-with-each-other/
他介绍了干净的代码和最佳实践。在实现任何内容之前,最好先阅
或者如果你有一些建议
您的代码需要干净。将纬度作为String传递它会在以后创建一个问题(转换,代码理解,甚至错误)。 在这里开个新账户,看看叔叔鲍勃。他的课程很有价值。 matteomanferdini上面跟随叔叔鲍勃的做法。 https://www.safaribooksonline.com/library/view/clean-code/9780134661742/