Skip to content

Instantly share code, notes, and snippets.

@hachinobu
hachinobu / gist:f195a286b5f891a3fb90
Created May 12, 2015 07:18
Optional Bindingによる開示

navigationController?.toolbarHidden = false
// let hiddenはnil判定かつOptionalの開示された変数なのでwhereがないと条件が真になってしまう
if  let hidden = navigationController?.toolbarHidden where isbar {
	println(hidden)
}
else {
	println(hidden)
}
@hachinobu
hachinobu / gist:1033e403e01ebd59b24f
Last active August 29, 2015 14:21
Swift Optional
let a: String?
let b: String!
let c: String

a = nil //OK
b = nil //OK
c = nil //NG
@hachinobu
hachinobu / gist:b09262a49043914339e6
Last active August 29, 2015 14:20
Swiftのreduce便利

var evens = [Int]()
for i in 1...10 {
if i % 2 == 0 {
evens.append(i)
}
}
var evenSum = 0
for i in evens {
@hachinobu
hachinobu / gist:68dc0ace95256ffc3c75
Last active August 29, 2015 14:19
クラス名を文字列に

Objective-C

 
+ (UIViewController*)viewControllerForStoryboardName:(NSString*)storyboardName class:(id)class
{
    UIStoryboard* storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
    NSString* className = nil;
    
    if ([class isKindOfClass:[NSString class]])
Xcodeの
Edit -> Convert -> To Latest Swift Syntax...
である程度やってくれる
@hachinobu
hachinobu / gist:d959ea929a7352fe1bef
Last active August 29, 2015 14:19
点線を引く
UIViewの継承クラス
- (void)drawRect:(CGRect)rect {
// Drawing code
UIBezierPath *path = [UIBezierPath bezierPath];
// 線の色を設定
[[UIColor colorWithRed:151.0/255.0 green:151.0/255.0 blue:151.0/255.0 alpha:1.0] set];
// 線の太さを設定
[path setLineWidth:1.0f];
// 点線のパターンを設定
// 5px線を描き、7px空白にする
@hachinobu
hachinobu / gist:e92542baec6ffc1c66a5
Created November 11, 2014 01:53
NSDate with ISO-8601
NSDateFormatter* formatter = [NSDateFormatter new];
formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
formatter.timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
NSDate* date = [formatter dateFromString:@"2013-10-04T05:16:29.000Z"];
@hachinobu
hachinobu / gist:29bc73df495617a07c3a
Last active August 29, 2015 14:08
makeObjectsPerformSelector
for (UIView *view in [self.view subviews]) {
[view removeFromSuperview];
}
[[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
は同じ意味になる
@hachinobu
hachinobu / gist:528355340d38b09adabf
Created September 15, 2014 06:00
mergeでコンフリクトした際にmerge処理前に戻す方法
git reset --hard ORIG_HEAD
git reset --hard $commit_id で現在のブランチの指す先を差し替えられますから、 git log --graph --oneline --decorate などでコミットログを表示して マージ前の状態に相当するコミット(例えばID badcafe のコミット)を探して git reset --hard badcafe とすればマージ前の状態に巻き戻すことができます。 でもこれはちょっと面倒です。
実は git merge のような「危険」な(= 現在のブランチの内容を大幅に変える可能性のある)コマンドの場合、 実行前の状態を ORIG_HEAD という名前で参照できるようになっています。 つまり、わざわざコミットログを確認しなくても以下のコマンドで マージ前の状態に巻き戻すことができます:
@hachinobu
hachinobu / gist:3b4e5dcc715c7823111e
Last active August 29, 2015 14:06
pbxprojファイルのコンフリクト防止 mergepbxの使い方
https://github.com/simonwagner/mergepbx
cloneする。
mergepbxプロジェクトに移動して
./build.py
~/.gitconfig に以下の設定を追加する
[merge "mergepbx"]
name = XCode project files merger
driver = mergepbx %O %A %B