Swift
Set とは? Swift の Collection Type の一つで、配列の順序が重要ではなく重複する値が無いような配列を作成したい場合に Array よりも便利に使用することができます。 また、格納する値は Hashable に準拠する必要があり、これにより様々な便利メソッドが…
みなさん、最近 CollectionView は使っていますでしょうか?CollectionView っレイアウトの方法がいっぱいあってどれを使うべきか結構迷いますよね〜♀️ 今回はそんな CollectionView を使って、ページをめくるようにスクロールすることのできる UI を作って…
みなさん Swift で正規表現使ったことありますか?僕は、iOSアプリ開発はじめたての頃、よく分からずググりまくっていました 今回は、そんな少しとっつきづらい正規表現を改めてまとめることで、再理解しちゃおうぜ!という記事です 正規表現とは? 文字列の…
今回は iOS14 での PhotoLibrary 周りの更新を簡単にまとめます。主なアップデートは Limited Photos Library と、Photos Library access level の二つです。 Limited Photos Library Limited Photos Library はその名の通り、アプリにアクセスを許可する写…
Swift Standard Library は、モジュールのインポートが何もない状態でも動作する、Swift プログラムを作成するためにの基本的なシンボルの集まりです。また、Swift Standard Library は Swift で記述されていますが、他の Swift コードを構築するためのコア…
個人で開発中のアプリで RxSwift を使用した簡易インクリメンタルサーチを実装したので、その方法を簡単にまとめたいと思います 作業していくっ 今回行うインクリメンタルサーチの仕様は下記の通りで、入力した ID が使用可能かどうかを調べるためにこの機…
今回は、Swift の @autoclosure アノテーションについて書いていこうと思います。 @autoclosure とは? @autoclosure アノテーションをつけてクロージャーを実装すると、呼び出し側で引数として渡した値をクロージャーとして扱うことのできる機能です。@auto…
Swift を書いていると、Class を使うか Struct を使うか迷う時が結構あり、どちらを使うべきか悩んだ時に判断する指標となることを簡単にまとめていきたいと思います。 参照: https://blog.usejournal.com/swift-struct-or-class-how-to-choose-d22d987bac3d…
SE-0286 - Forward-scan matching for trailing closures SE-0279 "Multiple Trailing Closures" threaded the needle between getting the syntax we wanted for multiple trailing closures without breaking source compatibility. One aspect of that co…
SE-0269 - Multi-Pattern Catch Clauses Swift は開始以来、末尾のクロージャのラベルを省略できる Trailing closure という構文をサポートしてきました。 // Without trailing closure: UIView.animate(withDuration: 0.3, animations: { self.view.alpha =…
SE-0276 - Multi-Pattern Catch Clauses Currently, each catch clause in a do-catch statement may only contain a single pattern and where clause. This is inconsistent with the behavior of cases in switch statements, which provide similar func…
SE-0269 - Increase availability of implicit self in @escaping closures when reference cycles are unlikely to occur Modify the rule that all uses of self in escaping closures must be explicit by allowing for implicit uses of self in situati…
今日から少しの間、開発作業が多くなりブログにまとまった時間が取れそうにないので、1日1Tips にもっとも良さそうな Swift5.3 の変更点を書いて行こうかと思います where clauses on contextually generic declarations This proposal aims to lift the re…
今回は、Swift における Generic Programming について理解を含めようということで、Swift の公式ドキュメントを眺めがらメモした内容をまとめていきます。 docs.swift.org 目次 Why generics? Generic Functions Type Parameters Generic Type Type Constra…
今回は、Xcode11.7 から Xcode12.0.1(GM) への移行中に発生した、タイトルのエラーで原因だったポイントと、改善方法を簡単にまとめます。なお、error: Illegal instruction: 4 は SwiftCompiler ではなく、OS によって出力されている Error のようですので…
今回は、前回の Widget Configuration まとめ Part1 に続き、後半の内容をまとめていきたいと思います。 developer.apple.com 目次 Widget Configuration UI のタイトルや内容背景の色などをカスタマイズする方法について Widget System Intelligence につい…
今回は、Swiftから LLVM IR に変換する際に使用される Swift Compiler について簡単にまとめてみようかと思います。 ここら辺の低レイヤーの部分は今まではあまり触っていませんでしたが、知識として持っておくことで、Xcode が暗黙的に行っている作業が理解…
Xcode12 の対応に伴って、新しく出た warnings を修正しようとしていると、PHAuthorizationStatus 周りで何やら Switch must be exhaustive という warning が発生していました。 全てのケース網羅してるはずだけどな〜と思い、PHAuthorizationStatus のソー…
今回は、NSDataDetector を使って特定の文字列を抽出する時に少しハマったポイントを紹介したいと思います。 ハマりポイント いつもの如く NSDataDetector を使用して、文字列の中に存在するリンクを下記のように取得していると、意図しない場所でリンクがき…
今回は、Swift5.0・Swift5.1 でそれぞれ対応された、ABI Stability と Module Stability について簡単にまとめてめてみたいと思います。 ABI Stability とは? ABI Stability は異なるバージョンのコンパイラから生成されたバイナリ同士をリンクできるように…
今回は、Storyboard や xib などの Interface Builder を使ってレイアウトを設計する際などに知っておくと少し便利な、@IBDesignable・@IBInspectable について簡単にまとめていこうかと思います。 @IBDesignable とは? Storyboard や xib などの Interface…
今回は昨日の import と Link の記事に引き続き、Bridging Header や Module Map について簡単にまとめていきたいと思います。 Bridging Header Bridging Header は Objective-C で書かれたコードを Swift で利用する仕組みで、それぞれの Objective-C 製ラ…
今回は iOS 開発における Library および Framework のインポートおよび、リンクの仕組みについて学んだことをまとめていきたいと思います。 これらのことを学ぶことで、今まで Xcode が暗黙的に行っていた処理がどのようになっているのかが分かり、ライブラ…
今回は、Swift で使用されるライブラリの形式について調べたことをまとめていきたいと思います。 ライブラリの種類 今回は、ライブラリという言葉で Framework と Library をまとめていますが、両者には違いがあるのでご注意ください。それでは、それぞれの…
今回は、Swift で文字列に含まれている URL を抽出する方法を簡単にまとめていこかと思います 結論 下記のように NSDataDetector というクラスを使用して、テキストからリンクを抽出することができます。 func getLinkTextList(text: String) -> [String] { …
今回は iOS アプリがどのようなライフサイクルで動いているのかを簡単にまとめて行きたいと思います。なんとなくボヤッとした感じでライフサイクルを認識していた人はぜひ目を通してみてください アプリの状態 状態 内容 Not running アプリは開始されていま…
今日も前夜の記事に続きiOSDC2020のセッションを聞けた範囲でおもしろかったもののまとめをしておこうと思います。 ※ よかったら毎日ブログ書いてるので、暇な時に見てください yamato8010.hatenablog.com 4年間運用されて表示速度が低下した詳細画面を改善…
今回は RxSwift(RxCocoa) でたびたび使用する Subject・Relay の違いや Observable との違いについて簡単にまとめようと思います。また、Trait などはまた別の記事で触れようかと思います。 Subject・Relay とは? これらのクラスはイベントの検知もできます…
今回は、CocoaPods や Carthage などでインストールしたライブラリなどを Storyboard・xib などで使用する場合に時々発生する。[Storyboard] Unknown class 〇〇 in Interface Builder file. の対処法を残しておこうかと思います。 原因・解決法 今回のケー…
今回は View の制約を更新する際などに登場する updateConstraints() について簡単にまとめていきます なんのメソッド? このメソッドはUIView のインスタンスメソッドで、View の制約を更新する際に呼び出します。基本的にはシステム側がレイアウトパフォー…