Post

Replies

Boosts

Views

Created

Why don't work URLSession in Swift Widget
I create widget with temperature from my site. In standart program all work, but in Widget on result i see "0" (info from var) Here code with mistake (DataProvider.swift) import Foundation class DataProvider { &#9;&#9; &#9;&#9;struct CurrencyJSON: Codable { &#9;&#9;&#9;&#9;var temp : String &#9;&#9;} &#9;&#9;static func getTemp() -> String { &#9;&#9;&#9;&#9; &#9;&#9;var dig : String = "0" &#9;&#9;print ("1") &#9;&#9;//on url this data: {temp:3.5}, this is my site, i can do anything format, may be make format: 3.5 (no json)? &#9;&#9;URLSession.shared.dataTask(with: URL(string: "http://example.com/weather.php")! ) {(data, response, error) in &#9;&#9;&#9;&#9;guard let data = data else { return } &#9;&#9;&#9;&#9;do { &#9;&#9;&#9;&#9;&#9;&#9;let res = try JSONDecoder().decode(CurrencyJSON.self, from: data) &#9;&#9;&#9;&#9;&#9;&#9;dig=res.temp &#9;&#9;&#9;&#9;&#9;&#9;print ("\(dig)") &#9;&#9;&#9;&#9;} catch let error { &#9;&#9;&#9;&#9;&#9;&#9;print("\(error)") &#9;&#9;&#9;&#9;} &#9;&#9;}.resume() &#9;&#9;return dig &#9;&#9;} &#9;&#9; } And on widget i see "0" (From this: var dig : String = "0"), why? Where i make mistake? Here my struct Provider: TimelineProvider: struct Provider: TimelineProvider { &#9;&#9;func placeholder(in context: Context) -> SimpleEntry { &#9;&#9;&#9;&#9;SimpleEntry(date: Date(), myString: "...") &#9;&#9;} &#9;&#9;func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) { &#9;&#9;&#9;&#9;let entry = SimpleEntry(date: Date(), myString: "...") &#9;&#9;&#9;&#9;completion(entry) &#9;&#9;} &#9;&#9;func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) { &#9;&#9;&#9;&#9;var entries: [SimpleEntry] = [] &#9;&#9;&#9;&#9;print ("1") &#9;&#9;&#9;&#9;// Generate a timeline consisting of five entries an hour apart, starting from the current date. &#9;&#9;&#9;&#9;let currentDate = Date() &#9;&#9;&#9;&#9;for hourOffset in 0 ..< 5 { &#9;&#9;&#9;&#9;&#9;&#9;let entryDate = Calendar.current.date(byAdding: .second, value: hourOffset * 10, to: currentDate)! &#9;&#9;&#9;&#9;&#9;&#9; &#9;&#9;&#9;&#9;&#9;&#9;let entry = SimpleEntry(date: entryDate, myString: DataProvider.getTemp()) &#9;&#9;&#9;&#9;&#9;&#9;entries.append(entry) &#9;&#9;&#9;&#9;} &#9;&#9;&#9;&#9;let timeline = Timeline(entries: entries, policy: .atEnd) &#9;&#9;&#9;&#9;completion(timeline) &#9;&#9;} }
1
0
588
Jan ’21