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)? { |