teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

リンクを変更、試したことを追記

2018/07/04 11:43

投稿

DeepRoastBeans
DeepRoastBeans

スコア85

title CHANGED
@@ -1,1 +1,1 @@
1
- swift4のgetによるjson(mysqlのデータ)取得の書き方
1
+ []swift4のgetによるjson(mysqlのデータ)取得の書き方
body CHANGED
@@ -1,6 +1,50 @@
1
1
  swift4で、https(http)のgetによるjsonデータ取得はどのように書いたらいいのでしょうか?
2
2
 
3
3
  下記URLのコードを参考に、postでmysqlにinsert, updateまではできたのですが、mysqlからfetchしてjsonで取得するswift側の書き方がわかりません。
4
- https://www.wantedly.com/companies/mediaxis/post_articles/74867
4
+ [swiftからmysqlにデータを登録してみる](https://www.wantedly.com/companies/mediaxis/post_articles/74867)
5
5
 
6
+ 試したコード1
7
+ ```
8
+ lang-swift4
9
+ override func viewDidLoad() {
10
+ super.viewDidLoad()
11
+ let stringUrl = "http://hoge.com/index.php"
12
+ let url = URL(string: stringUrl)
13
+ let request = URLRequest(url: url!)
14
+ let session = URLSession(configuration: URLSessionConfiguration.default, delegate: nil, delegateQueue: OperationQueue.main)
15
+ let task:URLSessionDataTask = session.dataTask(with: request, completionHandler: {(data, response, error) in
16
+ if error != nil {
17
+ print(error!)
18
+ return
19
+ }
20
+ DispatchQueue.main.async{
21
+ }
22
+ })
23
+ task.resume()
24
+ // Do any additional setup after loading the view, typically from a nib.
25
+ }
26
+ ```
27
+
28
+ 試したコード2
29
+ ```
30
+ override func viewDidLoad() {
31
+ super.viewDidLoad()
32
+ let listUrl = "http://hoge.com/index.php"
33
+ do {
34
+ guard let url = URL(string: listUrl) else { return }
35
+ URLSession.shared.dataTask(with: url){(data, response, error) in
36
+ if error != nil {
6
- ※jsonでなくても、mysqlからfetchできれば問題ないです。
37
+ print(error!.localizedDescription)
38
+ }
39
+ guard let data = data else { return }
40
+ let json = try? JSONDecoder().decode([JsonSample].self, from: data)
41
+ }.resume()
42
+
43
+ } catch{
44
+ }
45
+ self.label.text = json[0].name
46
+ }
47
+ ```
48
+
49
+ 試したこと3
50
+ SwiftyJSONをダウンロード