Skip to content

Instantly share code, notes, and snippets.

@discardableResult
public func send(_ action: Action) async throws -> State {
try Task.checkCancellation()
let effect = await reducer.reduce(into: &viewState, action: action)
if let nextAction = await effect.run() {
return try await send(nextAction)
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let label1 = addLabel(with: "I am a dynamic object")
let spacer1 = addSpacer()
let label2 = addLabel(with: "Me too.")
let spacer2 = addSpacer()
let label3 = addLabel(with: "Me three")
let spacer3 = addSpacer()
Task {
await withDiscardingTaskGroup { group in // or, `withTaskGroup(of: Void.self) { group in … }`
for destination in pingResults.keys {
let hostname = destination.hostname
group.addTask { [self] in
do {
let averagePing = try await getAveragePing(hostname: hostname, interval: 1, timeout: 2, attempts: 5)
pingResults[destination] = .success(averagePing)
processingFirstResult = false
var task: Task<Void, Error>?
let (stream, continuation) = AsyncStream.makeStream(of: URL.self)
task = Task {
for await url in stream {
do {
print("Sending request to \(url)")
let (data, response) = try await URLSession.shared.data(from: url)
// do something with data & response
class ViewController: NSViewController {
let calendar = Calendar.autoupdatingCurrent
var previousIdentifier: String = Calendar.current.timeZone.identifier
override func viewDidLoad() {
super.viewDidLoad()
// poll to see if the identifier changed
Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [weak self] timer in
import Foundation
class ViewController: NSViewController {
private let scrollView = NSScrollView()
private let tableView = NSTableView()
private let arrayController = NSArrayController()
private var observers: [NSKeyValueObservation] = []
// Your data source array
@objc dynamic var people: [Person] = [
import UIKit
class HandleView: UIView {
var corner: Corner = .unknown
}
extension HandleView {
enum Corner: Int {
case unknown = -1
case topLeft = 0
var valuesA: [Float] = [2, 0.5, 9, 1, 18]
let rowsA = Int32(valuesA.count)
let columnsA = Int32(valuesA.count)
var rowIndicesA = Array(0 ..< rowsA)
var columnStarts = Array(0 ... valuesA.count)
var valuesB: [Float] = [3, 5, 8, 7, 2,
1, 4, 9, 1, 3,
2, 7, 3, 1, 2,
5, 4, 9, 1, 6,
func fetchData<M: Decodable>(target: T, responseClass: M.Type = M.self, completion: @escaping(Result<M, Error>) -> Void) {
let method = Alamofire.HTTPMethod(rawValue: target.methods.rawValue)
let headers = Alamofire.HTTPHeaders(target.headers ?? [:])
let params = buildParams(task: target.task)
AF.request(target.baseUrl + target.path, method: method, parameters: params.0, encoding: params.1, headers: headers)
.validate()
.responseDecodable(of: M.self) { response in
switch response.result {
case .success(let value): completion(.success(value))
case .failure(let error): completion(.failure(error))
import UIKit
class ShadowedSwitch: UISwitch {
override init(frame: CGRect) {
super.init(frame: frame)
configure()
}
required init?(coder: NSCoder) {
super.init(coder: coder)