Skip to content

Instantly share code, notes, and snippets.

extension Task {
static func bar() {
Task<Void, Error> {
try await foo()
}
}
}
extension Task where Success == Void, Failure == Error {
static func baz() {
class PetAnnotation: MKPointAnnotation {
let type: PetType
init(_ type: PetType, title: String? = nil, subtitle: String? = nil, latitude: Double, longitude: Double) {
self.type = type
super.init()
self.title = title
self.subtitle = subtitle
let regex = Regex {
Capture {
ZeroOrMore {
OneOrMore(.word)
"."
}
OneOrMore(.word)
}
"@"
Capture {
let emailRegex = /((?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*"))@((?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]))/
let redactText = "…"
let maxUserNameLength = 24
func redactEmail(for line: String) -> String {
line.replacing(emailRegex) { match in
let (_, name, domain) = match.output
// If the username is too long, it might be a false positive for an email.
return name.count > maxUserNameLength ? "\(name)@\(domain)" : redactText
@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] = [