質問編集履歴

2

タイトルが誤っていたので変更しました

2019/09/01 13:55

投稿

dragon_seven
dragon_seven

スコア7

test CHANGED
@@ -1 +1 @@
1
- Listviewのスクロールが重い
1
+ Tableviewのスクロールが重い
test CHANGED
File without changes

1

コードを追加しました

2019/09/01 13:55

投稿

dragon_seven
dragon_seven

スコア7

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- Xcodeで開発しているiOSアプリで、外部のデーターベースからAPIを使ってListviewに表示させてスムーズにスクロールさせたい。
3
+ Xcodeで開発している最新の映画を確認できるiOSアプリで、外部のデーターベースからAPIを使ってListviewに表示させてスムーズにスクロールさせたい。
4
4
 
5
5
  ### 発生している問題・エラーメッセージ
6
6
 
@@ -10,6 +10,170 @@
10
10
 
11
11
  Macのキャッシュクリアなども試しましたが効果が見られませんでした。
12
12
 
13
+ ### コード
14
+
15
+ ```Swift
16
+
17
+ static func searchMovie(count : Int) {
18
+
19
+ //リクエストURLの組み立て
20
+
21
+ guard let req_url = URL(string: "https://api.themoviedb.org/3/movie/upcoming?page=(count)&language=jp&api_key=45cfffebd76a148b4c8907aed12b6eae"
22
+
23
+ ) else {
24
+
25
+ return
26
+
27
+ }
28
+
29
+ //リクエストに必要な情報を生成
30
+
31
+ let req = URLRequest(url: req_url)
32
+
33
+
34
+
35
+ //リクエストをタスクとして登録
36
+
37
+ let task = URLSession.shared.dataTask(with: req, completionHandler: {
38
+
39
+ (data , response , error) in
40
+
41
+ do {
42
+
43
+ // JSON Decoderのインスタンス取得
44
+
45
+ let decoder = JSONDecoder()
46
+
47
+ // 受け取ったJSONデータを解析して格納
48
+
49
+ let json = try decoder.decode(ResultJson.self , from: data!)
50
+
51
+ //print(json)
52
+
53
+ // 映画の情報が取得できているか確認
54
+
55
+ if let resultList = json.results {
56
+
57
+ // 取得している映画の情報の数だけ処理する
58
+
59
+ for results in resultList {
60
+
61
+ // 映画のタイトル、公開日、ポスターのデータがあるか確認
62
+
63
+ if let original_title = results.original_title , var release_date = results.release_date , var
64
+
65
+ poster_path = results.poster_path {
66
+
67
+ // 公開日の”-”の文字が邪魔なので削除
68
+
69
+ if let range = release_date.range(of:"-") {
70
+
71
+ release_date.removeSubrange(range)
72
+
73
+ if let range = release_date.range(of:"-") {
74
+
75
+ release_date.removeSubrange(range)
76
+
77
+ }
78
+
79
+ }
80
+
81
+ // 画像ファイルの”/”が邪魔なので削除
82
+
83
+ if let range = poster_path.range(of:"/") {
84
+
85
+ poster_path.removeSubrange(range)
86
+
87
+ }
88
+
89
+ // それぞれの配列に入れる
90
+
91
+ movieTitleList.append(original_title)
92
+
93
+ moviePosterPathList.append(URL(string: "https://image.tmdb.org/t/p/w500/(poster_path)")!)
94
+
95
+
96
+
97
+ // 公開日は後でソートしたいのでInt型に変換して格納
98
+
99
+ movieReleaseDateList.append(Int(release_date)!)
100
+
101
+ // 日付の配列にも公開日を格納
102
+
103
+ DatemovieReleaseDateList.append(ViewController.dateFormater.date(from: release_date)!)
104
+
105
+
106
+
107
+ // print(date?.description ?? "nil")
108
+
109
+ // 公開日に合わせてタイトル、ポスターの画像を降順にソート
110
+
111
+ for _ in 0..<movieReleaseDateList.count-1 {
112
+
113
+ for j in 0..<movieReleaseDateList.count-1 {
114
+
115
+ if(movieReleaseDateList[j] > movieReleaseDateList[j+1]){
116
+
117
+ let t = movieReleaseDateList[j]
118
+
119
+ movieReleaseDateList[j] = movieReleaseDateList[j+1]
120
+
121
+ movieReleaseDateList[j+1] = t
122
+
123
+
124
+
125
+ let k = movieTitleList[j]
126
+
127
+ movieTitleList[j] = movieTitleList[j+1]
128
+
129
+ movieTitleList[j+1] = k
130
+
131
+
132
+
133
+ let l = moviePosterPathList[j]
134
+
135
+ moviePosterPathList[j] = moviePosterPathList[j+1]
136
+
137
+ moviePosterPathList[j+1] = l
138
+
139
+
140
+
141
+ let p = DatemovieReleaseDateList[j]
142
+
143
+ DatemovieReleaseDateList[j] = DatemovieReleaseDateList[j+1]
144
+
145
+ DatemovieReleaseDateList[j+1] = p
146
+
147
+ }
148
+
149
+ }
150
+
151
+ }
152
+
153
+ }
154
+
155
+ }
156
+
157
+ }
158
+
159
+ semaphore.signal()
160
+
161
+ } catch {
162
+
163
+ print("エラー発生")
164
+
165
+ }
166
+
167
+ })
168
+
169
+ //ダウンロード開始
170
+
171
+ task.resume()
172
+
173
+ }
174
+
175
+ ```
176
+
13
177
  ### 補足情報(FW/ツールのバージョンなど)
14
178
 
15
179
  ・Xcode 10.2.1