Skip to content

Instantly share code, notes, and snippets.

View artemkrachulov's full-sized avatar

Artem Krachulov artemkrachulov

View GitHub Profile
@artemkrachulov
artemkrachulov / ResultPublisher.swift
Created November 20, 2023 07:54 — forked from aduuub/ResultPublisher.swift
A Publisher that turns a completion with Result into a Combine Publisher
import Foundation
import Combine
public struct ResultPublisher<Success, Failure>: Publisher where Failure: Error {
public typealias Output = Success
public typealias Failure = Failure
public typealias ResultCallback = (Result<Success, Failure>) -> Void
@artemkrachulov
artemkrachulov / memoryAddress.swift
Created November 2, 2023 17:53 — forked from matsuda/memoryAddress.swift
Get memory address in Swift
///
/// https://stackoverflow.com/a/29741007
///
let s = Struct() // Struct
withUnsafePointer(to: s) {
print(String(format: "%p", $0)
}
///
/// http://stackoverflow.com/a/36539213/226791
@artemkrachulov
artemkrachulov / ContentView.swift
Created April 4, 2022 14:50 — forked from mshafer/ContentView.swift
Slide-over card (like in Maps or Stocks) using SwiftUI
import SwiftUI
struct ContentView : View {
var body: some View {
ZStack(alignment: Alignment.top) {
MapView()
SlideOverCard {
VStack {
CoverImage(imageName: "maitlandbay")
Text("Maitland Bay")
/// Source
/// https://github.com/wendyliga/SwiftKit/blob/master/Sources/SwiftKit/Array%2BExtension.swift
/// Article
/// https://medium.com/flawless-app-stories/say-goodbye-to-index-out-of-range-swift-eca7c4c7b6ca
import Foundation
extension Array {
/**
extension ObservableType {
func flatMap<A: AnyObject, O: ObservableType>(weak obj: A, selector: @escaping (A, Self.E) throws -> O) -> Observable<O.E> {
return flatMap { [weak obj] value -> Observable<O.E> in
try obj.map { try selector($0, value).asObservable() } ?? .empty()
}
}
func flatMapFirst<A: AnyObject, O: ObservableType>(weak obj: A, selector: @escaping (A, Self.E) throws -> O) -> Observable<O.E> {
return flatMapFirst { [weak obj] value -> Observable<O.E> in
@artemkrachulov
artemkrachulov / snippets.swift
Last active March 16, 2017 13:58
What to use
// In Swift a method can be marked with rethrows keyword. It means that it throws an error only if one of its arguments throws an error.
func bar(callback: () throws -> Void) rethrows {
try callback()
}
//using String to throw an error.
extension String: Error {}
func bar() throws {
//
// CGRect+Geometry.swift
//
// Created by Artem Krachulov.
// Copyright (c) 2016 Artem Krachulov. All rights reserved.
// http://www.artemkrachulov.com
//
import UIKit
//
// CGSize+Geometry.swiftt
//
// Created by Artem Krachulov.
// Copyright (c) 2016 Artem Krachulov. All rights reserved.
// http://www.artemkrachulov.com
//
import UIKit
//
// Double-Float+Rounding.swift
// Extension for Ceil, Floor and Round methods.
//
// Created by Artem Krachulov.
// Copyright (c) 2016 Artem Krachulov. All rights reserved.
// Website: http://www.artemkrachulov.com/
//
import UIKit
//
// UIColor+HEX.swift
//
// Created by Artem Krachulov
// Copyright (c) 2016 Artem Krachulov. All rights reserved.
// http://www.artemkrachulov.com
//
import UIKit