20210731のSwiftに関する記事は4件です。

UITextFieldをタップ時、任意のTextを追加する。

完成形はこんな感じ 機能説明 撤去する日付のUITextFieldをタップした時に、年月日が表示されます。 コードと簡単解説 .addTarget(target: Any?, action: Selector, for: UIControl.Event)を用います。 UIControl.Eventの箇所には、UITextFieldをタップした時にactionの処理を使いたいので,.allTouchEventsを今回使用しています。 actionの処理は、UITextFieldをタップした時にUITextField.Textが空だったら、年月日をUITextField.Textに表示します。 なぜ、UITextField.Textが空の時なのかは、希望の入力値を入力した後にUITextFieldをタップしたらUITextField.textが「年月日」だけになってしまいますので、それを防ぐ為です。 @IBOutlet weak var deadlineDayTextField: UITextField! override func viewDidLoad() { super.viewDidLoad() deadlineDayTextField.addTarget(self, action: #selector(addYearMonthDay), for: .allTouchEvents) } @objc func addYearMonthDay(_ sender:UITextField){ if sender.text == ""{ sender.text = "年月日" } } 終わり 今日は、年月日を入力する時に何度も「年月日」を入力したくなくて、簡単ですが書いてみました。 ご指摘、ご質問などありましたら、コメントまでお願い致します。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

画像あり。swiftにRealmDBをpodfileを使わずに導入する方法。

swiftでrealmを使いたい方向けに記事を書いてみました。 お役に立てれば幸いです。 【【画像あり】swiftでpodfileを使わずにRealm DBを使う方法】 https://saisai-weblink.com/2021/07/31/【画像あり】swiftでpodfileを使わずにrealm-dbを使う方法/
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[2021/07/31/投稿]個人開発アプリにSwiftLintを導入する

投稿の経緯 機械的にコードチェックをおこない、コードの統一化、可読性の向上、、開発効率の向上を期待してSwiftUIで開発中の個人アプリにはじめてSwiftLintを導入したので記事にしました。 SwiftFormatを導入した記事はこちら? [2021/07/30更新]個人開発アプリにSwiftFormatを導入する 環境 Swift version 5.4.2 Xcode version 12.5.1 SwiftLintとは SwiftLintとはSwiftの静的解析ツールで、コンパイラよりも詳細にソースコードの解析をすることができます。こちらのGitHubのルールに沿ってコードを解析します。 SwiftLintの導入 同一プロジェクトに導入したSwiftFormatをCocoaPodsで導入したので 統一してCocoaPodsで導入します。 PodfileにSwifLintをセットしてpod installします。 Podfile. pod 'SwiftLint' コマンドラインからの使い方 ターミナルを開いて導入したアプリのディレクトリでコマンドを叩くと静的解析の結果が表示されます。 cd プロジェクトのルートディレクトリ Pods/SwiftLint/swiftlint ビルド時に解析させるように設定する コマンドラインで叩いたPods/SwiftLint/swiftlintをXcodeで実行できるようにしましょう。 プロジェクトのアプリ用ターゲットの左上の + ボタンをタップして、Build PhasesにNew Run Script Phaseを追加し、SwiftLintを実行できるように設定します。 "${PODS_ROOT}/SwiftLint/swiftlint" このようになればSwiftLintをXcodeで実行できます。 ルールをカスタム SwiftLintのデフォルトルールで発火する警告を発火させたくない場合などにルールをカスタムします。例えば、変数名の最小文字数や1行あたりの文字数などなど... チーム開発の場合はルールの設定内容をチーム内で議論した方が良さそうですね。個人開発の場合はお好みで。ちなみに私はあまりカスタムせず、デフォルトに従ってコードを書いています。 それではルールをカスタムします!今回は以下のルールを設定します。 ・Podsを対象外にする ・multiple_closures_with_trailing_closureの無効化 ・conditional_returns_on_newlineの有効化 ・conditional_returns_on_newlineの有効化 ・1行あたりの文字数制限を450に変更 ・変数名が1文字以上なら許可に変更 ・Type名が2文字以上なら許可に変更 SwiftLintではルールの設定に.swiftlint.ymlを作成し、そこに記述します。 ターミナル. touch .swiftlint.yml でファイルを作成して ターミナル. open .swiftlint でファイルを開いて、ルールを設定します。 ・SwiftLintの対象外とする場合はexcluded:を使う ・無効とするルールを設定する場合はdisabled_rules:を使う ・デフォルトで無効とされているルールを有効とする場合はopt_in_rules:を使う ・ルールをカスタムする場合はルール名:を使う 今回カスタムするルールと?こちらを組み合わせると。以下のようになります。 swiftlint.yml # SwiftLintの対象外とする excluded: - Pods # 無効とするルール disabled_rules: - multiple_closures_with_trailing_closur # デフォで無効とされたルールを有効とする opt_in_rules: - conditional_returns_on_newline # ルールをカスタム line_length: 450 # 1行あたりの文字数制限を450に変更 identifier_name: # 変数名が1文字以上なら許可に変更 min_length: 1 各ルールの詳細はこちらに記載されているのでざっと目を通すことをオススメします。 これでSwiftLintを導入できました。参考にしてください! お知らせ 現在、iOS開発案件を業務委託で募集中です(副業)。TwitterDMでご依頼をお待ちしています。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Swiftエラー処理

Swiftエラー処理 swiftは静的型付け言語であり、安全性の高い言語 ではあるがエラーの発生は避けられないのでエラーを適切に処理する必要がある。 do-catch構文 書き方 do { try メソッドを書く } catch { // エラーが発生した場合の処理を書く } tryはtry?とtry!で機能が違う。?はエラーになっても無視して実行するが、!は強制アンラップをするのでアプリがクラッシュする可能性がある。 もしエラーが起こりうる関数を定義したらあわせてthorowsキーワードを引数の後に書く必要がある Result型のエラー処理 Result型のエラー処理は正確にエラー内容をかくにんすることができる 列挙型の形をとり、case .successとcase .failureのケースを持つ。 ライブラリでswitch文で条件分岐する書き方がよくある public enum Result<Success, Failure: Error> { case success(Success) case failure(Failure) } 下記の書き方でAlamofireで使用するイメージ switch result { case .success: print("成功") case .failure: print("失敗") } assert,precondition ある条件を満たした場合にプログラムを終了する。 ビルドの状態によって最適化されているが、基本preconditionでも同じ使用方法である。基本デバックでassertを使う func method(_ arg: Int) { //if文のように使用する assert(arg < 0, "プログラム終了")//assertがpreconditionでも同じ挙動をする print("処理実行されない") } method(-1) assertionFailure 強制的にプログラムを終了させる func method(_ arg: Int) { assertionFailure("プログラム終了") print("処理を実行されない") } fatalError 強制的にプログラムを終了させる(assetは条件を満たした場合のみ) fatal.swift func method() { fatalError("プログラム終了") print("処理実行されない) } method()
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む