Apple tarafından 15 Ekim tarihinde yayınlanan istatistiklere göre iOS 13 kullanımı tüm Apple cihazların %50’sinden fazlasında kullanılmaya başlandı bile.
Dolayısıyla geçtiğimiz aylarda yüzünü gösteren SwiftUI için çalışmalarımızı hızlandırma zamanı. Boş kaldıkça ufak tefek denemeler, kurcalamalar yaptığım SwiftUI ile ilgili örnekleri de elimden geldiğince burada paylaşmaya çalışacağım.
Şimdi gelelim SwiftUI ile uzak siteden json veri çekme ve parse etme olayına.
Swiftui Fetch Remote Json And Parse
Öncelikle data modelimiz için struct oluşturalım.
import Foundation struct Movie: Decodable, Identifiable { public var id: Int public var name: String public var released: String enum CodingKeys: String, CodingKey { case id = "id" case name = "title" case released = "year" } }
Sonrasında JSON verimizi çekelim ve modelimize göre parse edelim.
import Foundation public class MovieFetcher: ObservableObject { @Published var movies = [Movie]() init(){ // load() } func load() { let url = URL(string: "https://gist.githubusercontent.com/rbreve/60eb5f6fe49d5f019d0c39d71cb8388d/raw/f6bc27e3e637257e2f75c278520709dd20b1e089/movies.json")! URLSession.shared.dataTask(with: url) {(data,response,error) in do { if let d = data { let decodedLists = try JSONDecoder().decode([Movie].self, from: d) DispatchQueue.main.async { self.movies = decodedLists } }else { print("No Data") } } catch { print ("Error") } }.resume() } }
Ve son aşama, verilerimizi listeleyelim.
import SwiftUI struct ContentView: View { @ObservedObject var fetcher = MovieFetcher() var body: some View { VStack { Button(action: { self.fetcher.movies = [] self.fetcher.load() }) { Text("Getir") }.padding() List(fetcher.movies) { movie in VStack (alignment: .leading) { Text(movie.name) Text(movie.released) .font(.system(size: 11)) .foregroundColor(Color.gray) } } } } }
Bu içerik https://medium.com/@rbreve kullanıcısından alınarak çalıştığı test edilmiş ve Türkçe olarak yayınlanmıştır.