SegueManager has been moved to a CocoaPod, see the repository.
It is still possible to use it by just copying a single file into your project:
- SegueManager.swift for iOS
- SegueManager.swift for OSX
// | |
// DarwinNotificationCenter.swift | |
// | |
// Created by Nonstrict on 2023-12-07. | |
// | |
import Foundation | |
import Combine | |
private let center = CFNotificationCenterGetDarwinNotifyCenter() |
/// - returns: `true` when dynamic type is `Equatable` and `==` returns `true`, otherwise `false`. | |
func areEquatablyEqual(_ lhs: Any, _ rhs: Any) -> Bool { | |
func receiveLHS<LHS>(_ typedLHS: LHS) -> Bool { | |
guard | |
let rhsAsLHS = rhs as? LHS | |
else { return false } | |
return areEquatablyEqual(typedLHS, rhsAsLHS) | |
} | |
return _openExistential(lhs, do: receiveLHS) | |
} |
import UIKit | |
@UIApplicationMain | |
class AppDelegate: UIResponder, UIApplicationDelegate { | |
var window: UIWindow? | |
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { | |
print(process(MyFoo())) | |
return true | |
} |
// We can use Phantom Types to provide strongly typed acces to NSUserDefaults | |
// Similar to: http://www.objc.io/blog/2014/12/29/functional-snippet-13-phantom-types/ | |
// A key to UserDefaults has a name and phantom type | |
struct Key<T> { | |
let name: String | |
} | |
/* Domain model */ | |
// A Profile consists of a person name and an optional avatar | |
struct Profile { | |
let personName: PersonName | |
let avatarURL: NSURL? | |
} | |
// These are the UX rules for showing a greeting: |
import Foundation | |
let obj = NSNumber(int: 2) | |
func correct<T>() -> T? { | |
if let val = obj as? T { | |
println("matching types") | |
return val | |
} |
// This is now available as a full library instead of a gist: https://github.com/Q42/RxPromise |
function fixMapScrollwheel(map) { | |
map.setOptions({ scrollwheel: false }); | |
google.maps.event.addListener(map, 'click', function() { | |
map.setOptions({ scrollwheel: true }); | |
}); | |
google.maps.event.addListener(map, 'mouseout', function() { | |
map.setOptions({ scrollwheel: false }); | |
}); |
SegueManager has been moved to a CocoaPod, see the repository.
It is still possible to use it by just copying a single file into your project:
func unwrap<T1, T2>(optional1: T1?, optional2: T2?) -> (T1, T2)? { | |
switch (optional1, optional2) { | |
case let (.Some(value1), .Some(value2)): | |
return (value1, value2) | |
default: | |
return nil | |
} | |
} | |
func unwrap<T1, T2, T3>(optional1: T1?, optional2: T2?, optional3: T3?) -> (T1, T2, T3)? { |