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

質問編集履歴

3

リクエストの追加

2020/04/15 01:34

投稿

Mama_ma_ma
Mama_ma_ma

スコア5

title CHANGED
File without changes
body CHANGED
@@ -24,6 +24,23 @@
24
24
  var gender: String
25
25
  var age: Int
26
26
  }
27
+ //jsonデータの取得
28
+ public func getJson() {
29
+
30
+ let url = "該当のurl"
31
+ let headers: HTTPHeaders = ["Content-Type": "application/json"]
32
+ Alamofire.request(url, method: .get, encoding: URLEncoding(destination: .queryString), headers: headers).responseJSON {response in
33
+ guard let data = response.data else {
34
+ return
35
+ }
36
+ do {
37
+ let jsonData = try JSONDecoder().decode([jsonModel].self, from: data)
38
+
39
+ } catch let error {
40
+ print("Error: (error)")
41
+ }
42
+ }
43
+ }
27
44
  var mergeJsonData = [String:[String:Any]]()
28
45
 
29
46
  for data in jsonData {

2

ソース修正

2020/04/15 01:34

投稿

Mama_ma_ma
Mama_ma_ma

スコア5

title CHANGED
File without changes
body CHANGED
@@ -33,7 +33,8 @@
33
33
  mergeJsonData.updateValue(["value": 0, "last_value": 0, "number": 0], forKey: data.name)
34
34
  }
35
35
  if let _mergeJsonData = mergeJsonData[data.name]!["value"] {
36
+ print(mergeJsonData[data.name]!["value"]!) //この時点では0が出力される
36
- tmp = cast(value: mergeJsonData[data.name]!["value"] as! Double)!
37
+ let tmp = cast(value: mergeJsonData[data.name]!["value"] as! Int)! //nilエラー
37
38
  mergeJsonData[data.name]!["value"] = tmp + data.value
38
39
  } else {
39
40
  mergeJsonData[data.name]!.updateValue(data.value, forKey: "value")

1

ソースコードを一部編集しました

2020/04/15 01:10

投稿

Mama_ma_ma
Mama_ma_ma

スコア5

title CHANGED
File without changes
body CHANGED
@@ -27,21 +27,19 @@
27
27
  var mergeJsonData = [String:[String:Any]]()
28
28
 
29
29
  for data in jsonData {
30
- if (gender.contains(data.gender) && age.contains(data.age)) {
31
- if let _mergeJsonData = mergeJsonData[data.name] {
30
+ if let _mergeJsonData = mergeJsonData[data.name] {
32
- mergeJsonData[data.name] = mergeJsonData[data.name]
31
+ mergeJsonData[data.name] = mergeJsonData[data.name]
33
- } else {
32
+ } else {
34
- mergeJsonData.updateValue(["value": 0, "last_value": 0, "number": 0], forKey: data.name)
33
+ mergeJsonData.updateValue(["value": 0, "last_value": 0, "number": 0], forKey: data.name)
35
- }
36
- if let _mergeJsonData = mergeJsonData[data.name]!["value"] {
37
- tmp = cast(value: mergeJsonData[data.name]!["value"] as! Double)!
38
- mergeJsonData[data.name]!["value"] = tmp + data.value
39
- } else {
40
- mergeJsonData[data.name]!.updateValue(data.value, forKey: "value")
41
- }
42
-
43
34
  }
35
+ if let _mergeJsonData = mergeJsonData[data.name]!["value"] {
36
+ tmp = cast(value: mergeJsonData[data.name]!["value"] as! Double)!
37
+ mergeJsonData[data.name]!["value"] = tmp + data.value
38
+ } else {
39
+ mergeJsonData[data.name]!.updateValue(data.value, forKey: "value")
40
+ }
44
41
  }
42
+
45
43
  private func cast(value: Any) -> Double? {
46
44
  if let double = value as? Double {
47
45
  return double