higan96技術メモ

https://github.com/higan96

swift

cocoapodsでRxSwiftをインストールした際に出てきた謎のエラー「Expected ',' separator」

Environment Swift 4.2 Cocoapods 1.5.3 XCode 10.0 Problem 表題の通り、Expected ',' separatorっていうエラーがRxSwiftのパッケージ側に出てきて、ビルドがうまくいかなかった。 Cocoapodsで管理しているのですが、Pods以下はロックされていて自分でいじ…

WKWebViewで最初に読み込んだページに戻る

WKWebViewの最初に読みこんだページ(URL)に戻りたいことがあったので、いろいろ調べたらwebView.goToBackForwardListItem(item: WKBackForwardListItem)で実現できました。 let webView = WKWebView() let count = webView.backForwardList.backList.count…

AlamofireでUser-Agentを編集する

概要 Alamofireを使用していてUser-Agentを編集したいとき、ManagerのイニシャライザにNSURLSessionConfigurationのインスタンスを渡して対応しました。 NSURLSessionConfigurationの設定については、後から動的に変えることができないので、注意が必要です…

UITextFieldを含むUITableViewCellのNSIndexPathを取得する方法

UITableViewCellを含むCellが1つであれば、UITextFieldDelegateのtextFieldDidEndEditingから取得するだけでいいのですが、これが複数になると引数のtextFieldがどのCellに帰属するのかわからないので面倒です。 悩んでいたら、textFieldDidEndEditingの引数…

CompleteHandlerのないアニメーションにCATransactionでCompleteHandlerを追加する

タイトルの通りです。 CompleteHandlerのないアニメ―ションにCompleteHandlerを追加します。 下の例ではUITableViewのediting modeの終了アニメーション後に処理を追加しています。 CATransaction.begin() CATransaction.setCompletionBlock { () -> Void in…

複数のUITextFieldとUITextViewが混在するViewControllerでキーワードを閉じる

通常、であればViewConrollerがUITextFieldDelegateかUIViewControllerを適用して、textFieldShouldReturnだったり何かしらのタッチイベントでtextField.resignFirstResponder()をすると思います。 ただ、UITextFieldとUITextViewが混在する場合、どちらが編…

randomなint

var items = [1,2,3] var randomIndex: Int = Int(arc4random()) % items.count items[randomIndex] みたいに使う

OHHTTPStubとXCTestで、モックを使った非同期処理をテストする

通信をモックを使って、実際のサーバーサイドやWebAPIとの通信を行わずにテストする。 import UIKit import XCTest class SomeAPIClientTests: XCTestCase { let someAPIClient = SomeAPIClient() override func setUp() { super.setUp() } override func te…

UIViewを45度傾かせる

吹き出しようの「ぺろっ」と出てている三角形を作りたかったので、正方形を45度傾かせて実現しました。 この辺の数学的知識が無いので、解説はできません。 let angle = CGFloat(M_PI * (45) / 180.0) //miniBoxはUIViewのインスタンス miniBox.transform = …

CoreLocationで国、都道府県、市区町村の取得

import CoreLocation let location:CLLocation = CLLocation(latitude: lat, longitude:lon) geocoder.reverseGeocodeLocation(location, completionHandler:{(placeMarks, error) -> Void in if error == nil { if placeMarks.count > 0{ let placemark: CL…

コレクションはオプショナル型にしない

Swiftを始めてオプショナル型覚えたてで、オプショナル型使いたい病にかかってしまい、 メソッドの返り値のコレクションデータまでオプショナル型で返していました。 ですが、やっぱアンラップするのがめんどくさい。 そもそも、ArrayにもDictionaryにもisEm…