DRYな備忘録

Don't Repeat Yourself.

swift

【iOS】ビルドバージョンの自動インクリメントのSwift実装(PlistBuddyからの脱却)

背景 Xcodeのプロジェクトをやっていて、CI/CDなどを整えていると、iOSプロジェクトのビルドバージョン( 1.0 (N) のNの部分)を自動でインクリメントとかしたくなることがある。 PlistBuddyを使え macOSだとPlistBuddyというコマンドが/usr/libexec/PlistBu…

【iPhone】No such module 'RxSwift'

問題 pod installでRxSwiftをインポートしたつもりだが、ViewControllerでimport RxSwiftとすると、 No such module 'RxSwift' となり、もちろんビルドもRunもできない。 解決 .xcodeprojではなく、.xcworkspaceから開く。 No such module 'RestKit' with co…

iOSでFontAwesomeを使う【Xcode10.3】

※ Xcodeは変化が早いので日付に注意してください ゴール XcodeのiOSプロジェクトでFontAwesomeが使える 参考 TTFの追加: Adding a Custom Font to Your App | Apple Developer Documentation iOS : How to use FontAwesome in Xcode project. - Umair Hassan…

【iOS】ボタン長押しの実装【Xcode10.3】【Swift5】

※ Xcodeは変化が早いので記事の日付に注意してください ゴール 長押ししてアラートとか出るボタンを設置する tl;dr override func viewDidLoad() { super.viewDidLoad() let recognizer = UILongPressGestureRecognizer(target: self, action: #selector(onL…

TravisCI using fastlane failed with message "Your bundle is locked to credentials_manager (0.16.2)"

Problem $ bundle install --jobs=3 --retry=3 --deployment Fetching gem metadata from https://rubygems.org/........ Fetching version metadata from https://rubygems.org/.. Fetching dependency metadata from https://rubygems.org/. Your bundle i…

iOSプロジェクトをTravisCIでCIしたい

「Travis CIでCIしたい」なのか「TravisでCIしたい」なのか悩みました。 参考 Automate Testing & Build Delivery with fastlane and Travis CI | Macoscope Blog iOS: Continuous Integration with Travis CI and Fastlane tl;dr gem install fastlane 必要…

UITableViewの左にある謎の余白を消したい

やることは3つ UITableViewのseparatorInsetをゼロにする これはインターフェースビルダーからでも変更可能 UITableViewCellのlayoutMarginsをゼロにする UITableViewCellのpreservesSuperviewLayoutMarginsを無効にする func viewDidLoad() { super.viewDid…

RubyのtimesみたいなやつをSwiftでやりたい

count = 5 count.times.map { |i| i * i } # => [0, 1, 4, 9, 16] let count = 5 [Int](0..<count).map { $0 * $0 } // => [0, 1, 4, 9, 16] こうすか、しらんけど</count).map>

【iOS】プロジェクト内に配置したjsonファイルの内容をSwiftyJSONで取得する

let filepath = NSBundle.mainBundle().pathForResource("message", ofType:"json") // 1. Resourcesっていうグループ(と物理ディレクトリ)作ってるけど、ファイル名だけでよい // 2. 返り値はnullable(String?)なので注意 let data = NSData(contentsOf…

Fabric/Crashlyticsで同プロジェクトの別bundle identifierのアプリを追加する

twittercommunity.com Xcodeにおいてbundle identifierを変更する Fabricデスクトップアプリにおいて「+ New App」というボタンがあるのでクリック 同プロジェクトを選択する チュートリアルが始まるが、だいたいのことは済んでるので、⌘+Bとか適当にしてチ…

【iOS】画面の向き(Orientation)を特定のページのみで制限したり許可したりしたい【supportedInterfaceOrientations】

ゴール たとえば 基本的にPortrait(縦向き)のみに制限したいんだけど、特定の画面だけではLandscape(横向き)を許可したい 特定のViewで、強制的に向きを変えることはできる けど、これは向きを変えるだけであって、ふたたび端末をぐるっとすると縦向きに…

SwfitでTableViewをつかってかっこいいフィードを実装するときに習得したことまとめ

いかんせんスケジュールがギリギリだったので、個別にエントリ書くのは無理でした TableView TableViewの各Rowの高さを指定したい tableView.rowHeight swiftでtableViewの高さを変更する - Qiita TableViewのボーダーを消したい tableView.separatorStyle =…

なにもしてないのにXcodeがこわれた: An error was encountered while running (Domain = LaunchServicesError, Code = 0)

ios - Unable to run app in Simulator: An error was encountered while running (Domain = LaunchServicesError, Code = 0) - Stack Overflow ios - Installation Failed "Invalid argument" when trying to run Today application extension - Stack Over…

【追記】XCTAssertEqualが("foo bar") is not equal to ("foo bar")などと寝ぼけたことを言う【NSNumberFormatter】

問題 ("Optional("10,00 €")") is not equal to ("Optional("10,00 €")" とか言われてXCTAssertEqualがコケる。 調査 Optionalとか 文字列型のポインタを比較してEqualじゃないよとか そういうのを予想してたけど、どうやら違う printしてみた出力をアサーシ…

【2015年版】Xcodeで超簡単なWebViewアプリをつくってみる【iOS】【Xcode6.4】

2013年の記事↓ さすがに古いし、今回はSwiftつくってみようじゃないかということで。 Xcodeで超簡単なWebViewアプリを作ってみる【Xcode5.0.2編】 - DRYな備忘録otiai10.hatenablog.com 目次 プロジェクトつくる ViewControllerファイルを追加してStoryboard…