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 / 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 / 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 / UIView+NibInstantiatable.swift
Last active October 20, 2021 13:33
Load ViewController from Storyboard or View from Xib (These are same name.) Require : Swift 2.0
protocol NibInstantiatable {
static var NibName: String { get }
}
extension NibInstantiatable {
static var NibName: String { return String(Self) }
static func instantiate() -> Self {
return instantiateWithName(NibName)
@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 / 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 / carthage-framework-paths.sh
Last active August 9, 2019 02:40
carthage-framework-paths
#!/bin/bash
usage() {
cat <<HELP
SYNOPSIS:
$0 [-d] [iOS(default)|watchOS|tvOS|Mac]
$0 [-h]
ARGUMENTS:
iOS print paths for iOS (default)
watchOS print paths for iOS
@sgr-ksmt
sgr-ksmt / zenkaku_hankaku.swift
Last active July 15, 2021 18:55
[Swift] : 文字列の全角/半角の変換 + 数字だけ半角/全角変換
extension String {
private func convertFullWidthToHalfWidth(reverse: Bool) -> String {
let str = NSMutableString(string: self) as CFMutableString
CFStringTransform(str, nil, kCFStringTransformFullwidthHalfwidth, reverse)
return str as String
}
var hankaku: String {
return convertFullWidthToHalfWidth(false)
}
@sgr-ksmt
sgr-ksmt / AutoreleasepoolTry.swift
Last active August 22, 2017 21:03
Swift : autoreleasepool + try
public func autoreleasepool(@noescape code: () throws -> ()) rethrows {
try {
var error: ErrorType?
autoreleasepool {
do {
try code()
} catch (let e) {
error = e
}
}
@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
}