Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

社内でiOSアプリ開発初心者に、 StoryboardをViewController単位で分けた場合の画面遷移、値渡し方法の説明時サンプルとして残しておく 環境 Xcode: 11.3.1 Swift5 ・遷移先のUIViewController、StoryBoardを作成する UIViewControllerを作成 プロジェクトナビケータを右クリックし、New Fileを選択 Cocoa Touch Classを選択 Class: NextViewController、 Subclass of: UIViewController、 Also Create XIB File: チェック外す、 Language:Swift Nextを選択 そのままCreateでOK StoryBoardを作成 プロジェクトナビケータを右クリックし、New Fileを選択 Storyboardを選択 Next
Kotlin / Swift での Unicode の扱いまとめ (見た目上の文字数カウント, UTF-8, UTF-16, BOM, 正規化, 異体字セレクタ)AndroidiOSKotlinUnicodeSwift Kotlin と Swift での見た目上の文字数カウント実装を中心に、Unicode について知っておくべき知識をまとめます。 また、モバイルアプリで入力文字数のカウントや入力文字数の上限をどのように扱うかは以下の別の記事にまとめました。 文字数カウント まずは、文字数カウントが難しい例として絵文字と異体字セレクタ表現の例を挙げます。詳しい説明はこの記事の後半を確認してください。 絵文字 🧑🦰 の文字数について確認します。🧑🦰 は以下の Unicode で構成されています。 文字 Code point UTF-8 表現 UTF-16 表現 Descriptio
はじめに 本記事は Swift/Kotlin愛好会 Advent Calendar 2021 の17日目の記事です。 空いていたので埋めました。 「依存性逆転の原則」と「依存性の注入」を完全に理解したので説明します。 「依存性逆転の原則(DIP)」とは? 英語で「Dependency Inversion Principle」といい、「DIP」と略すことが多いです。 SOLID の5原則の1つです。 従来のレイヤーパターン 例えば MVP アーキテクチャのViewとPresenterで考えてみます。 ViewとPresenterの間には以下の特徴があります。 View(UI)はPresenterのことを知るべきではない PresenterはViewからメッセージを受け取り、それに基づいて処理を行い、Viewに反映する これは「ViewはPresenterに依存せず、PresenterはVie
タスクを優先順位付きで作成し、タスクを実行し、タスクをキャンセルします。 ユーザーが「集中モード」をオンにしたかどうかを把握する 位置情報ボタン (SwiftUI) SwiftUIを利用してリモート画像を読み込む (SwiftUI) Listリストの検索機能 (SwiftUI) リストセパレータを隠す (SwiftUI) リストにPull to Refresh(引っ張って更新)機能を追加 (SwiftUI) テキストフィールドのフォーカスを外す (SwiftUI) リストセルにスワイプアクションを追加する (SwiftUI) テキストビューでマークダウンを使用する (SwiftUI) 画面が表示されたらタスクを実行します (SwiftUI) タブビューにバッジ(未読メッセージカウンター)を追加 この記事は developer.apple.com 上で公開されている文書に基づいて書かれました
はじめに こんにちは! iOSエンジニアのやまたつ です☺️ Oshidoriというアプリを個人で開発し、リリースしています!!!Oshidoriというアプリを個人で開発し、リリースしています!!! 非同期処理を書く方法っていくつかあるんだなあと思ってまとめてみたくなったので書きました! 実務だったり、個人アプリで使った非同期処理のパターンを書きたいと思います。 複数通信の時の処理も書きます。 Promise Kit が有能すぎて感動したので Promise Kit 贔屓になってます。ご了承ください。 クロージャを使って非同期処理を書く // ここがクロージャ //////////////////// func fetchUser(id: Int, completion: @escaping (User?,Error?)->()) { // ここで通信 userInfoRep.fetch(
タイトル通りです。 しかし、意外と一つにまとまっているものがなかったので書いてみます。 ついでにlabelで複数行記述しています。 let label = UILabel() // widthは適当に設定。画面幅を取得しlabelが中央に配置されるようにする。 let screenwidth = Float(UIScreen.main.bounds.size.width) let width = 300 let widthGap = (screenwidth - Float(width)) / 2 label.frame = CGRect(x: Int(widthGap), y: 100, width: Int(width), height: 60) // textAlignmentで文字を中央揃えに。 label.textAlignment = NSTextAlignment.cente
この記事は、NIFTY Advent Calendar 2017の2日目の記事です 1日目はwinterwind26さんの「[PHP] LINE Messaging API を使ったチャットボットをテストしてみた」でした。 ニフティでモバイルアプリエンジニア(iOSメイン)をしています、hicka04です。 ※実はこの記事がQiita初投稿なので、温かい目で見守っていただけると幸いです。 今回は、自分が担当しているiOSアプリの改善をしたくて勉強したことを共有しようと思います。 前段 MVPとは Model - View - Presenterからなるアーキテクチャ MVVMやClean Architectureなど、さまざまなアーキテクチャのうちの一つ なぜMVCから脱却したいのか? ViewControllerの肥大化 いわゆるFatViewController / MassiveVi
今回、あるViewControllerから別のViewControllerに処理を伝搬したいものがあり、 調べたところ、NotificationCenterを使えば実現できると知り実装しました。 今回はその実装方法について説明してみようと思います。 NotificationCenterって?? NotificationCenterは、異なるViewController間のイベント通知を実現できるもので、 発信側と受信側が存在します。 それぞれ、この通知が来たらこの処理をする! この処理を実行したらあのViewControllerに処理をお願いする! みたいなことが可能になります。 使い方 通知名前空間の拡張 まず、下記をどこかのファイルに記載してください。 拡張のため、どのファイルに書かないといけないみたいなことはありませんが、 あとから見返してわかる場所に書くことがベストだと思います。
注意: この記事はv0.39.0以降に対応していません。 初回リリースから0.39.0まで、Effect型はCombine.Publisherプロトコルに準拠していましたが、0.39.0以降はSwift ConcurrencyによりReducerの仕組みが変更されているのでそこら辺をご考慮願います。 Swiftを用いたiOS/macOS/tvOS/watchOSアプリ開発用に The Composable Architecture(TCA)というのがあり、それがめっちゃ良いやん!と思ったのでそれを書いておきます。フレームワーク的に提供されていますが、特にSwiftUIを使ってどういう構成でアプリを作ろうかと考えている人がコードを読むだけでもとてもいい教材になると思います。 The Composable Archtectureを提案しているのは、関数型プログラミングとSwiftについての動画
はじめに 今回がQiita初投稿です 普段は,Swift・Python・Goあたりを触っている執筆者です 生暖かい目線でお願いします 執筆したきっかけ MVVMやFluxを学ぶ前に,MVCとMVPを復習した iOSアプリ設計パターンを読んだ結果,悔い改めることになったため 備忘録として残したかったから 読者に求めること iOSエンジニアである必要はありません ただし,Appleにおける○○という表現はします アーキテクチャって?とかアーキテクチャ...なるほどよくわからん って方(一緒に勉強していきましょう!!) iOSアプリ設計パターンを手元に置きながら,読んでほしいです! MVC あまり多くは触れませんが,MVPを述べるためには必要不可欠な知識であるため書きます AppleにおけるMVCは少し特殊です.原初MVCと何が違うかについては,表を示した上で説明します. 原初MVC レイヤー
はじめに いまさらだけど iOS のファイル操作についてまとめました。ストアに公開しない業務用アプリとかつくってるとわりとガイドラインとかわすれる。。。 ファイル保存先 File System Programming Guide をみるとファイルの保存先は下記のようになっている様子。目的に沿って適当なものを選択する。 Documents/ 設定によって共有できるのでユーザーに見せたいファイルのみ保存する (Realm のファイルはデフォルトでここに保存されるみたいです) iCloud でバックアップされる Documents/Inbox 他のアプリからファイルを受け取るときに使用するディレクトリ iCloud でバックアップされる 削除はできるが編集は不可 Library/ ユーザーに見せたくないファイルを保存する iCloud でバックアップされる Library/Caches いわゆる
はじめに iOS Advent Calendar 2020 17日目です。 2年半くらいiOSアプリ開発してきてハッとした瞬間をまとめました。(iOSとかswiftに限った話じゃない学びもあるけど。) がんばらなくても読めるけど、なんとなく勉強にもなる記事を目指しました。 タイトルに近い方が初歩的なやつです。 もし時間あればみていただけると嬉しいです。 お品書き 返り値でBoolを返す時はそのBool自身を返せばいい 三項演算子を使うとif else がワンライナーで書ける var +=は計算型プロパティにできる。 ネストは早期returnで減らせる 2重否定はifでいい。 型が明確な時のinitializerは.initに省略できる trailing closureは引数から省略できる enumとswitchを組み合わせて網羅性をチェックする Bool値が複数ある場合の場合分けはswit
import UIKit class ViewController: UIViewController { // ボタンを用意 var addBtn: UIBarButtonItem! override func viewDidLoad() { super.viewDidLoad() // タイトルを付けておきましょう self.title = "Home" // addBtnを設置 addBtn = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "onClick") self.navigationItem.rightBarButtonItem = addBtn } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning
この記事を書いていく前に、弊社の人事兼開発者が 未経験のiOSエンジニアを採用する際に見ていること をまとめておりますので参考までにご覧ください https://note.com/bari555/n/n5921e83378fa ##多くの初学者が無駄なインプットをしすぎている 自分もそうだったのですが、 「どこまで勉強すれば実務に入れるのか」 「何を勉強したら良いのか」 がよくわからず、色々な言語(2桁)を浅く触り、 かなり時間を無駄にしたので、他の未経験の方に そういったことがないようにここにロードマップを残しておきたいと思います。 プログラミングでは全てを網羅しようとするとキリがないので、 あくまで自分が最低限実務で使っている、多用していることに絞っています。 また、スキルは証明しなければならないので、 深ぼったアプリを作る必要があります。 ##スキルマップ 基礎構文 新しいことを始め
label.text = { if /* condition */ { return "a" } else if /* condition */ { return "b" } else { return nil } }() この処理の意味するところは「label.text の値を条件に応じて設定している」なのですが、before の場合、「何か条件分岐してるな」などの伝えたいことの本質とは少し外れたステップを読み手に"最初"に考えさせてしまいがちです。 「ぞれぞれの条件のとき、何がおきるのかな」→「なるほど。label.text の値を設定しているのだろう。いや、もしかして、label.text ではないものに対しての処理も紛れてないか?」→「紛れもなく、label.text の値を設定しているのだ」と、心配させてしまうかもしれません。 一方、after のようにすると、その処理群が何をし
随時更新します 既存のプロジェクトにすぐに導入できるちょっとしたリファクタリングのアイディアを集めてみました。 こうしたアイディアを積極的に取り入れて、シンプルで美しいコードを目指しましょう。 How to slim down your viewDidLoad() method ネットワーク通信やビューの設定等、多くの初期化処理で膨らんだviewDidLoad()メソッドをスリムにしようという話。 override func viewDidLoad() { super.viewDidLoad() // 各ビューの設定など... // APIからデータを取得 let request = ListOrders.FetchOrders.Request() interactor?.fetchOrders(request: request) // 他の何か... }
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く