2021-04-01から1ヶ月間の記事一覧
Android・Kotlinで、Firebase Authenticationを使った、メールアドレスによるSignIn・SignUpの実装をしたので、簡単に手順をまとめてみたいと思います♀️ やっていく まずはFirebase Authentication Androidライブラリを、アプリレベルのGradleファイルに記…
Kotlinのdata classでinterfaceに準拠する際の書き方をメモ 結論 data classのイニシャライザに、Sportのインターフェースを含める場合には、下記のようにoverrideでプロパティを宣言する必要があるみたいです✍️ interface Sport { var name: String } data …
スマートキャストとは? スマートキャストは、型判定とキャストが同時に行われる、Kotlinコンパイラの仕組みのことをいいます。 使い方 Kotlinではis演算子を使うことで、下記のようにスマートキャストが行われます。 fun demo(x: Any) { if (x is String) {…
結論 普通にオプショナル値をアンラップしたい場合は、以前の記事でも紹介したように、let { }を使います。 val num: Int? = null num?.let { println(it) } アンラップできた場合とできなかった場合で処理を分岐をする場合は、下記のようにalsoとrunを使っ…
Firestoreを使って、アプリ側の強制アップデート機能を実装したので、今回はその方法を簡単に紹介していきたいと思います♀️ それではやっていく まず重要なのは、現在のバージョンが必須バージョンを満たしているかどうかの条件分岐です。これは以前のブロ…
本日はタイトルの通り、App Storeでのアプリ配信を停止する方法を紹介したいと思います やっていく とりあえず App Store Connect にログインして、指定のアプリを選択します。 価格および配信状況を選択します。 下の赤で囲んだ配信可否セクションで配信か…
今回もSwiftの超短い小ネタです♀️ 結論 iOS11以降からは、下記のようにUIViewのsafeAreaInsetsからSafeAreaの幅等を取得することができます。 UIApplication.shared.windows.filter { $0.isKeyWindow }.first?.safeAreaInsets.top ?? 0 てな感じで本日は以…
本日はSwiftの小ネタです👷♀️ 結論 下記のようにして、単色のUIImageを取得することができます。UIGraphicsBeginImageContext()は、GraphicsContextを作成してスタックにプッシュします。次に、プッシュされたコンテキストをUIGraphicsGetCurrentContext()で…
Swift同様に、KotlinにもResult型があったので、簡単に使い方をまとめてみます👷♀️ とりあえず使う とりあえず、成功した場合と失敗した場合のハンドリングしたい場合はこんな感じで、Swiftよりもスマートに書ける印象。 val result: Result<Int> = Result.success</int>…
Kotlinでも普通に三項演算子が使えると思ってたら、使えないみたいなので簡単にメモを残しておきます♀️ val max = (a > b) ? a : b // 三項演算子の代わりに、普通にIf式を使うとそれっぽくかけるらしいです。 val max = if (a > b) a else b // // ... i…
AndroidのTextViewで、インクリメンタルサーチを行う実装をRxBindingというライブラリを使って行ったので、その方法を簡単にまとめていきたいと思います♀️ github.com やっていく そもそもRxBindingとは?というところから調べてみると、公式レポに下記のよ…
結論 下記のようにContextにExtensionを生やして、システムデフォルトのローディングインジケーターを取得することができます。drawableの生成だけだと、アニメーション化されないため、(drawable as? Animatable)?.start()でアニメーションを開始させていま…
下記のようにsubscribe時に必要な処理を全て書いても問題ないですが、Logger.log(text)はイベント処理するための本質的なメソッドではないため、このような状態を許容しているとどんどんコードが見づらくなっていくことが予想できます。 incrementalSearchTe…
結論 あるObservableの最新値をストリームに合成したい場合は.withLatestFrom()オペレーターを使用します。 ob1.withLatestFrom(ob2) .subscribe(onNext: { ob1, ob2 in // TODO: }) .disposed(by: disposeBag) 短いですが、本日も以上になります その他の記…
本日は誰もが通るであろうUITableView/UICollectionViewの小ネタです♀️ 結論 UITableView/UICollectionViewのreloadData()のcompletionHandlerは公式でAPIが公開されていないので、UIView.animateを使うことでreloadData()の完了後に処理を書くことができま…
結論 下記のようにすることで、observableから流れてくる最初のイベントから500msの間隔があくまで、次のイベントをストリームに流さないようにすることができます。例えば、UIScrollViewなんかで最初のスクロールイベントのみを取得したい場合なんかに有効…
先日、Firestoreのクエリカーソルを日付で追加してデータを取得しようとすると、指定した位置のドキュメントがうまく取得できなかったのでメモを残しておきます♀️ let startDate = Date() db.collection("cities") .order(by: "serverDate") .start(at: [st…
SwiftのコードベースでAutoLayoutを設定する時によくやるこれ。 view.translatesAutoresizingMaskIntoConstraints = false view.widthAnchor.constraint(equalToConstant: 18).isActive = true view.heightAnchor.constraint(equalToConstant: 18).isActive …
先日Zennを眺めていたら、面白そうな記事を見かけたので、備忘録的に残しておきます zenn.dev 結論 Swiftの配列で要素の重複を取り除く方法として、Setがありました。 Set(arrayLiteral: "a", "a", "b", "c") // ["b", "c", "a"] しかし、Setは基本的に配列…
既存のFirebaseプロジェクトのStorageルールを途中から追加したので、そのメモを♀️ Storageルールの追加 とりあえず、storage.rulesファイルをルートに作成します。 次にfirebase.jsonで、作成したStorageルールのファイルを指定します。 // ... "storage":…
PlaygroundでSwiftPackage使えるようにしてみたので、手順を備忘録として残しておきます♀️ ちなみにXcode12以上が必要で、本記事はXcode12.4で作業を行っています。 やっていく まずは、File > New > Workspace...でワークスペースを作成します。 次に、ワ…
備忘録的に残しておく✍️ github.com nodenvをzshでセットアップ まずは、ソースを.nodenvにクローン。 $ git clone https://github.com/nodenv/nodenv.git ~/.nodenv nodenv installなども行えるようにnode-buildを~/.nodenv/node-buildにクローン。 $ git c…
とあるiOSプロジェクトで、依存関係のgemをインストールしようとbundle installを実行すると下記のようなエラーが発生しました。 Fetching source index from xxxx Retrying fetcher due to error (2/4): Bundler::HTTPError Could not fetch specs from xxx…
結論 XcodeのBuild Active Architecture Onlyを有効にすることで、開発時などに使う端末のアーキテクチャのバイナリのみを生成できるようになり、ビルド時間を削減することができるようになります。基本的には、デフォルトで有効になっています。(なぜかstag…
結論 NSSelectorFromStringを使うことで、下記のように文字列からSelectorを生成することができるようですね let selector = NSSelectorFromString("delete:") ちなみに今回は、UICollectionViewのcollectionView(_:canPerformAction:forItemAt:withSender:)…
このViewのタップイベントをスルーして、背面にあるViewをタップできるようにしたいという場面は、たまに遭遇するかと思います。今回はそんな場面で使えるSwiftの小ネタについて書こうかと思います♀️ 結論 hitTest(_:with:)で受け取ったイベントが自分自身…
本日もSwiftの小ネタです♀️ 結論 SwiftのErrorプロトコルは、codeプロパティを持たないので、下記のようにNSErrorに変換することでcodeを取得するようにします。 extension Error { var code: Int { return (self as NSError).code } } てな感じで本日も以…
久しぶりにAPNs証明書の更新を行ったので、本日はそのメモでも残しておきます♀️ ちなみに、今回のプロジェクトではPush通知を送るためにApple Push Notification Service SSL(証明書)を使用していますが、基本的にはApple Push Notification Authentication…
結論 REMOVE_GIT_FROM_RESOURCESをtrueに設定することで、バンドルリソースのコピー時に.gitディレクトリが除外されるようになります♀️ REMOVE_GIT_FROM_RESOURCES=true てな感じで本日も以上になります その他の記事 yamato8010.hatenablog.com yamato8010…
本日は初学者向けの内容で、UITableViewで空のCellを表示させないための簡易的な処理を紹介したいと思います♀️ よくあるこれです。 結論 tableFooterViewプロパティに空のUIView()をセットすれことで、空のCellが表示されないようになります。 tableView.ta…