Skip to content

Instantly share code, notes, and snippets.

View sgr-ksmt's full-sized avatar
👉
👁👃👁

Suguru Kishimoto sgr-ksmt

👉
👁👃👁
View GitHub Profile
@sgr-ksmt
sgr-ksmt / GetClassName.swift
Created August 27, 2015 01:11
Get Class Name
class GetClassName {
class func getClassName(obj: AnyObject) -> String? {
return NSStringFromClass(obj.dynamicType)?.componentsSeparatedByString(".").last
}
class func getClassName(aClass: AnyClass) -> String? {
return NSStringFromClass(aClass)?.componentsSeparatedByString(".").last
}
@sgr-ksmt
sgr-ksmt / UIVIewController+Storyboard.swift
Last active August 29, 2015 14:27
Instantiate ViewController from Storyboard
import UIKit
extension UIViewController {
class func instantiateFromStoryboard<T: UIViewController>() -> T {
if let name = NSStringFromClass(T.self)?.componentsSeparatedByString(".").last {
let storyboard: UIStoryboard = UIStoryboard(name: name, bundle: nil)
if let vc = storyboard.instantiateInitialViewController() as? T {
return vc
}
@sgr-ksmt
sgr-ksmt / FizzBuzz.swift
Last active December 11, 2015 02:56
FizzBuzz in Swift (one liner)
for i in 1...100{print((i%3>0 ?i%5>0 ?String(i):"":"Fizz")+(i%5>0 ?"":"Buzz"))}
@sgr-ksmt
sgr-ksmt / new-podspec.sh
Created February 17, 2016 12:53
Custom podspec template generator.
new-podspec () {
if [ $# -lt 1 ]
then
echo "Library name required."
exit 1
fi
: ${2:=1.0.0}
cat <<PODSPEC > "$1.podspec"
Pod::Spec.new do |s|
s.name = "$1"
@sgr-ksmt
sgr-ksmt / EnhancedErrorType.swift
Last active February 26, 2016 02:01
Enhanced ErrorType in Swift. blog; http://blog.sgr-ksmt.org/2016/02/26/enhanced_error_type/ (日本語)
public protocol EnhancedErrorType: ErrorType, CustomStringConvertible {
var domain: String { get }
var code: Int { get }
var userInfo: [NSObject: AnyObject]? { get }
}
extension EnhancedErrorType {
var _domain: String {
return domain
}
@sgr-ksmt
sgr-ksmt / Failureを返すパターン
Last active March 1, 2016 01:28
マイナンバーのチェックデジットをSwiftで計算する ref: http://qiita.com/su_k/items/4b442e3094fdea031065
enum ValidationResult {
case Success
case Failure(ValidationErrorType)
}
enum ValidationErrorType: ErrorType {
case WrongLength(Int) // マイナンバーの桁数(文字数)が不正の場合
case NotANumber // 数字以外が含まれている場合
case InvalidNumber // 検査して不正なマイナンバーだった場合
}
@sgr-ksmt
sgr-ksmt / rx_reachedBottom?.swift
Last active March 3, 2016 16:33
rx_reachedBottom??
import RxSwift
import RxCocoa
public extension UIScrollView {
public var rx_reachedBottom: Observable<Bool> {
return rx_contentOffset.map { $0.y == (self.contentSize.height - self.frame.height) }
}
}
@sgr-ksmt
sgr-ksmt / CodePiece.swift
Created March 4, 2016 13:34
CGRectZeroと書くべきか、CGRect.zeroと書くべきか、省略して.zeroと書くべきか... #CodePiece
let view = UIView(frame: CGRectZero)
// ↓
let view = UIView(frame: CGRect.zero)
// ↓
let view = UIView(frame: .zero)
@sgr-ksmt
sgr-ksmt / .swiftlint.yml
Created March 9, 2016 01:14
My .swiftlint.yml
# rules
#- colon
#- control_statement
#- file_length
#- force_cast
#- function_body_length
#- leading_whitespace
#- line_length
#- nesting
#- operator_whitespace
public protocol FilePathConvertible {
var filePath: String { get }
var fileURL: NSURL { get }
}
extension String: FilePathConvertible {
public var filePath: String {
return self
}
public var fileURL: NSURL {