@@ -28,9 +28,10 @@ class EventListViewController: UITableViewController {
2828
2929 override init ( style: UITableViewCell . CellStyle , reuseIdentifier: String ? ) {
3030 super. init ( style: style, reuseIdentifier: reuseIdentifier)
31-
32- rateButton. setImage ( UIImage ( systemName: " star " ) , for: . normal)
33- rateButton. setImage ( UIImage ( systemName: " star.fill " ) , for: . selected)
31+ if #available( iOS 13 . 0 , * ) {
32+ rateButton. setImage ( UIImage ( systemName: " star " ) , for: . normal)
33+ rateButton. setImage ( UIImage ( systemName: " star.fill " ) , for: . selected)
34+ }
3435 accessoryView = rateButton
3536 }
3637
@@ -47,7 +48,9 @@ class EventListViewController: UITableViewController {
4748
4849
4950
51+ @available ( iOS 13 . 0 , * )
5052 private var publisher : AnyCancellable ?
53+
5154 lazy var session = { URLSession ( configuration: URLSessionConfiguration . default) } ( )
5255
5356 override func viewDidLoad( ) {
@@ -70,16 +73,36 @@ class EventListViewController: UITableViewController {
7073
7174 func loadJSON( ) {
7275 let url = URL ( string: " https://api.mygigs.tapwork.de/eventsnearby?radius=80.0&latitude=52.52&longitude=13.410&apitoken=xQ3vdfKVIF " ) !
73- publisher = session. dataTaskPublisher ( for: url)
74- . receive ( on: RunLoop . main)
75- . map { $0. data }
76- . decode ( type: DataSource . self, decoder: JSONDecoder ( ) )
77- . sink ( receiveCompletion: { _ in } , receiveValue: { [ weak self] model in
78- guard let self = self else { return }
79- dataSource = model
80- self . tableView. reloadData ( )
81- self . refreshControl? . endRefreshing ( )
82- } )
76+ if #available( iOS 13 . 0 , * ) {
77+ publisher = session. dataTaskPublisher ( for: url)
78+ . receive ( on: RunLoop . main)
79+ . map { $0. data }
80+ . decode ( type: DataSource . self, decoder: JSONDecoder ( ) )
81+ . sink ( receiveCompletion: { _ in } , receiveValue: { [ weak self] model in
82+ guard let self = self else { return }
83+ dataSource = model
84+ self . tableView. reloadData ( )
85+ self . refreshControl? . endRefreshing ( )
86+ } )
87+ } else {
88+ let task = session. dataTask ( with: url) { data, response, error in
89+ guard let data = data else {
90+ print ( " Empty data. error: " , error ?? " nil " )
91+ return
92+ }
93+ do {
94+ let model : DataSource ? = try JSONDecoder ( ) . decode ( DataSource . self, from: data)
95+ DispatchQueue . main. async {
96+ dataSource = model
97+ self . tableView. reloadData ( )
98+ self . refreshControl? . endRefreshing ( )
99+ }
100+ } catch {
101+ print ( " Error " , error)
102+ }
103+ }
104+ task. resume ( )
105+ }
83106 }
84107
85108 override func tableView( _ tableView: UITableView , numberOfRowsInSection section: Int ) -> Int {
@@ -128,6 +151,8 @@ class DetailViewController: UIViewController {
128151 let label = UILabel ( )
129152 let imageView = UIImageView ( )
130153 let event : DataSource . Event
154+
155+ @available ( iOS 13 . 0 , * )
131156 private var publisher : AnyCancellable ?
132157
133158 init ( event: DataSource . Event ) {
@@ -142,17 +167,21 @@ class DetailViewController: UIViewController {
142167 override func viewDidLoad( ) {
143168 super. viewDidLoad ( )
144169
145- view. backgroundColor = UIColor . systemBackground
170+ if #available( iOS 13 . 0 , * ) {
171+ view. backgroundColor = UIColor . systemBackground
172+ }
146173
147174 view. addSubview ( imageView)
148175 imageView. translatesAutoresizingMaskIntoConstraints = false
149176 imageView. contentMode = . scaleAspectFill
150177
151178 imageView. addSubview ( label)
152- label. backgroundColor = UIColor . systemBackground
179+ if #available( iOS 13 . 0 , * ) {
180+ label. backgroundColor = UIColor . systemBackground
181+ label. textColor = UIColor . secondaryLabel
182+ }
153183 label. text = event. name
154184 label. numberOfLines = 0
155- label. textColor = UIColor . secondaryLabel
156185 label. textAlignment = . center
157186 label. translatesAutoresizingMaskIntoConstraints = false
158187
@@ -178,12 +207,26 @@ class DetailViewController: UIViewController {
178207 guard let url = URL ( string: event. image_url ?? " " ) else {
179208 return
180209 }
181- publisher = URLSession . shared. dataTaskPublisher ( for: url)
182- . receive ( on: RunLoop . main)
183- . map { UIImage ( data: $0. data) }
184- . sink ( receiveCompletion: { _ in } , receiveValue: { [ weak self] image in
185- guard let self = self else { return }
186- self . imageView. image = image
187- } )
210+ if #available( iOS 13 . 0 , * ) {
211+ publisher = URLSession . shared. dataTaskPublisher ( for: url)
212+ . receive ( on: RunLoop . main)
213+ . map { UIImage ( data: $0. data) }
214+ . sink ( receiveCompletion: { _ in } , receiveValue: { [ weak self] image in
215+ guard let self = self else { return }
216+ self . imageView. image = image
217+ } )
218+ } else {
219+ let task = URLSession . shared. dataTask ( with: url) { data, response, error in
220+ guard let data = data else {
221+ print ( " Empty data. error: " , error ?? " nil " )
222+ return
223+ }
224+ let image = UIImage ( data: data)
225+ DispatchQueue . main. async {
226+ self . imageView. image = image
227+ }
228+ }
229+ task. resume ( )
230+ }
188231 }
189232}
0 commit comments