Post

Replies

Boosts

Views

Activity

Reply to Combining More Than Four @Published Variables in Combine?
I guess it goes like the following. Publishers.CombineLatest4($variable0, $variable1, $variable2, $variable3) .combineLatest($variable4) .combineLatest($variable5) .sink { completion in } receiveValue: { response0, response1 in let variable = response0.0 let variable4 = response0.1 let variable5 = response1 let v0 = variable.0 let v1 = variable.1 let v2 = variable.2 let v3 = variable.3 }.store(in: &cancellables) It's kind of odd.
Topic: UI Frameworks SubTopic: UIKit Tags:
Nov ’21
Reply to UILabel with superscript text
override func viewDidLoad() { super.viewDidLoad() let text = "1:47PM" if let regularFont = UIFont(name: "Helvetica", size: 20.0), let subscriptFont = UIFont(name: "TamilSangamMN", size: 12.0) { let attString:NSMutableAttributedString = NSMutableAttributedString(string: text, attributes: [.font: regularFont]) attString.setAttributes([.font: subscriptFont, .baselineOffset: 6], range: NSRange(location: text.count - 2, length: 2)) label.attributedText = attString } }
Topic: Programming Languages SubTopic: Swift Tags:
Nov ’21
Reply to Using Combine-Future to Fetch Server Data
The following works. import UIKit import Combine class ViewController: UIViewController { // MARK: - Variables private var cancellableSet: Set<AnyCancellable> = [] override func viewDidLoad() { super.viewDidLoad() let _ = Future<[DataModel], Error> { [weak self] promise in guard let strongSelf = self else { return } let url = URL(string: "https://api.github.com/repos/ReactiveX/RxSwift/events")! URLSession.shared.dataTaskPublisher(for: url) .timeout(2.0, scheduler: DispatchQueue.global(qos: .background)) .retry(3) .map { $0.data } .decode(type: [DataModel].self, decoder: JSONDecoder()) .sink(receiveCompletion: { (completion) in print("I'm done: \(completion)") }, receiveValue: { dataModels in for model in dataModels { print("\(model.id) \(model.type)") } promise(.success(dataModels)) }) .store(in: &strongSelf.cancellableSet) } } } I wonder why it doesn't work if I use ViewModel?
Topic: UI Frameworks SubTopic: UIKit Tags:
Dec ’21
Reply to Using Combine-Future to Fetch Server Data
I guess the following is better. But I'm not completely satisfied. // ViewController // import UIKit import Combine class ViewController: UIViewController { // MARK: - Variables var cancellable: AnyCancellable? private var cancellableSet: Set<AnyCancellable> = [] // MARK: - Life cycle override func viewDidLoad() { super.viewDidLoad() let urlStr = "https://api.github.com/repos/ReactiveX/RxSwift/events" let viewModel = ViewModel(urlStr: urlStr, waitTime: 7.0) viewModel.fetchData(urlText: viewModel.urlStr, timeInterval: viewModel.waitTime) .sink { completion in print("Done!") } receiveValue: { dataModels in print("Count: \(dataModels.count)") } .store(in: &cancellableSet) } } // ViewModel // import UIKit import Combine class ViewModel { var anycancellables = Set<AnyCancellable>() var urlStr: String var waitTime: Double init(urlStr: String, waitTime: Double) { self.urlStr = urlStr self.waitTime = waitTime } func fetchData(urlText: String, timeInterval: Double) -> Future<[DataModel], Error> { return Future<[DataModel], Error> { promise in let url = URL(string: urlText)! var request = URLRequest(url: url) request.timeoutInterval = timeInterval let sessionConfiguration = URLSessionConfiguration.default let session = URLSession(configuration: sessionConfiguration) session.dataTask(with: request) { data, response, error in if let error = error { print("error: \(error.localizedDescription)") promise(.failure("Failure" as! Error)) } if let jsonData = data { do { let dataModels = try JSONDecoder().decode([DataModel].self, from: jsonData) promise(.success(dataModels)) } catch { print("Error while parsing: \(error)") } } }.resume() } } }
Topic: UI Frameworks SubTopic: UIKit Tags:
Dec ’21
Reply to Sign in with Apple not working on Xcode 13 simulators
I've tested my sample app with Apple Sign In with two simulators. They don't go further after I enter my password. When I tested it for a macOS application two weeks ago, I ended up restarting my iMac. The same is true for an iOS sample that I created at the same time. I had to restart my iPhone. Anyway, in your case, I wouldn't be worried as long as it works on an actual device. Some features simply don't work with the simulator.
Topic: App & System Services SubTopic: General Tags:
Dec ’21