This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
public extension UIView{ | |
func setWith(_ width: CGFloat){ | |
self.widthAnchor.constraint(equalToConstant: width).isActive = true | |
} | |
func setHeight(_ width: CGFloat){ | |
self.heightAnchor.constraint(equalToConstant: width).isActive = true | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protocol IBConstructible: AnyObject { | |
static var nibName: String { get } | |
static var bundle: Bundle { get } | |
} | |
extension IBConstructible { | |
static var nibName: String { | |
return String(describing: Self.self) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@discardableResult | |
func measure<A>(name: String = "", _ block: () -> A) -> A { | |
let startTime = CACurrentMediaTime() | |
let result = block() | |
let timeElapsed = CACurrentMediaTime() - startTime | |
print("Time: \(name) - \(timeElapsed)") | |
return result | |
} | |
let result = measure { (0..<1_000_000).reduce(0, +) } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public protocol NotificationName { | |
var name: Notification.Name { get } | |
} | |
public extension RawRepresentable where RawValue == String, Self: NotificationName { | |
public var name: Notification.Name { | |
get { | |
return Notification.Name(self.rawValue) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension UIWindow { | |
/// Fix for http://stackoverflow.com/a/27153956/849645 | |
func set(rootViewController newRootViewController: UIViewController, withTransition transition: CATransition? = nil) { | |
let previousViewController = rootViewController | |
if let transition = transition { | |
// Add the transition | |
layer.add(transition, forKey: kCATransition) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// Validate email string | |
/// | |
/// - parameter email: A String that rappresent an email address | |
/// | |
/// - returns: A Boolean value indicating whether an email is valid. | |
func isValid(_ email: String) -> Bool { | |
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 emailTest = NSPredicate(format:"SELF MATCHES[c] %@", emailRegEx) | |
return emailTest.evaluate(with: email) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
sudo apt-get install clang libicu-dev libcurl4-openssl-dev lldb git wget unzip -y | |
wget https://swift.org/builds/swift-4.1-release/ubuntu1604/swift-4.1-RELEASE/swift-4.1-RELEASE-ubuntu16.04.tar.gz | |
tar zxf swift-4.1*.tar.gz && rm -rf swift-4.1*.tar.gz | |
sudo mv swift-4.1* /swift-4.1 | |
echo "export PATH=/swift-4.1/usr/bin:\"\${PATH}\"" >> ~/.bashrc | |
source ~/.bashrc |