Category Note

Swift: 配列の操作まとめ

Swift でよく使う基本的な配列の操作を、基本的なものからまとめました。 目次 配列の操作まとめ まとめ 配列の操作まとめ 空の配列(String型)を作成 n 番目、最初、最後の要素を取得 要素の数を取得 配列の空チェック 配列の後ろに要素を1つ追加 //配列の2番目に要素を挿入する 3番目、最初、最後の要素を削除 配列をソート(昇順/降順) 配列の値を逆順にする 特定の文字列があるかを調べる 配列から、ある値(10)より大きい値の新しい配列を作成 特定の要素(“X”)がなければ追加する 特定の要素(“B”)があれば削除する まとめ 今回は配列の基本的な操作の説明でしたが、そのほかにも map, reduce を使えば、一括で配列の値を変更できる強力なものもあります。 これらは実際に使ってみて便利だと実感したときに、投稿に加筆したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: dispatch_after で遅延処理を行う

適当な処理のコールバック時にさらに別の処理を行ったりする際、実行するタイミングの問題で不具合を起こしたり、処理の引数が複数存在する場合や戻り値によっては、処理自体が正常に行われなかったりクラッシュになる場合があります。 そういったときには、スレッド処理の dispatch_after が便利です。 今回はこの dispatch_after の使い方をメモしておきます。 目次 dispatch_after で遅延処理を行う まとめ dispatch_after で遅延処理を行う 遅延処理を行いたい場所で以下の関数呼び出し、関数内の print の部分に処理を書いていけばいいかと思います。 dispatch_after 使い方 まとめ スレッドでの様々な処理は、一度使い方を覚えてしまうととても便利です。 通常時に処理を遅らせたいだけであれば NSTimer 等を使うはずですが、それでうまくいかない、思い通りの結果が出ないときは今回の dispatch_after を使用する、と覚えておけばいいかと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Xcode: 開発のログ・関連ファイル・キャッシュ等を削除する

Xcode で開発を行っていると、プロジェクトファイル以外に多くの関連ファイルが作成されます。 開発機が SSD の場合、ちょっとしたキャッシュもこまめに削除しておかないと、いつの間にかストレージの容量が残り数 GB となった場合、急にビルドが遅くなったり、クラッシュの原因となります。 今回は、iOS アプリ開発時に作成される関連ファイルが保存されている場所や、データを管理するためのメモを残したいと思います。 目次 開発のログ・関連ファイル・キャッシュ等を削除する まとめ 開発のログ・関連ファイル・キャッシュ等を削除する Xcode で開発に関連するファイルは ~/Library/Developer/Xcode/ 以下に保存されています。 各フォルダ内のデータについて Archives テストフライトでのベータ配布時や App Store 申請時にビルドしたアーカイブデータが保存されています。 直近のものは残しておいてもいいですが、半年以上前のものは削除しても問題ないと思います。 DerivedData シミュレータにインストールされたアプリデータや、一時的に開いたプロジェクトに関連する派生データが保存されています。間違って削除しても、プロジェクト起動時には必要なファイルが生成されるので、全削除しても問題ありません。 iOS DeviceSupport 開発機にインストールされている iOS デバイスのサポートファイルがバージョンごとに保存されています。最新の iOS のバージョン – 1.0 あたりまでを残して、古いものは全て削除しても問題ないと思います。 iOS Device Logs 各デバイスのログが保存されています。ログファイル自体は大きいものではないので、無理して削除する必要はないと思いますが、1年以上前のデータは全て削除してもいいのではないでしょうか。 まとめ 開発プロジェクト完了時や、新しい iOS やデバイスがリリースされるごとに、これらのファイルを整理するようにこころがけていれば、快適な作業環境が保てるのではないでしょうか。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: 高さ一覧

アプリ開発中にはオブジェクトの様々なサイズ取得は頻繁に行うことと思います。 いままで bounds や frame のどっちが何を意味するかを深く考えずに、Xcode のサジェストに頼りきりで、知識として定着していませんでした。 今回は、その反省と頭の中を整理するために、頻繁に利用するオブジェクトの「高さ」に焦点を当て、Swift で様々な高さを取得するための一覧をメモしておきます。 目次 高さ一覧 まとめ 高さ一覧 ステータスバーの高さ 画面の高さ(ステータスバー含まず) 画面の高さ(ステータスバー含む) ナビゲーションバーの高さ ツールバーの高さ タブバーの高さ まとめ いつも UIScreen.mainScreen().applicationFrame と UIScreen.mainScreen().bounds でどういった違いがあったか忘れてしまいます。 こうして一覧にしてみてみると applicationFrame は名前の通り「アプリケーションの枠」なので、ステータスバーが含まれないことは自明の理でしたね(笑) この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。
eyecatch_image

Atom: Key Binding Resolver を非表示にする

Atom でコーディング中、たまに何かの拍子で Key Binding Resolver のショートカットを押してしまい、意図せず表示してしまうことがあります。 いつもこの問題が起こった際、消す方法が分からず、その都度ショートカットを調べていたのでメモしておきます。 目次 Key Binding Resolver を表示・非表示にする まとめ Key Binding Resolver を表示・非表示にする Key Binding Resolver とは Atom の画面下部に表示される 対応しているキーバインドをリアルタイムで表示する機能 のことです。 Key Binding Resolver ショートカット [command] + [.] キーで表示非常時を切り替えられます。 まとめ メインのエディターを Atom に変更してからある程度時間が経ちます。 Atom はほぼデフォルト設定のままなので、その気になれば1週間くらいである程度便利に使えるようになると思うのですが、コーディングの中身に集中するあまり、基本的なショートカット以外なかなか覚えられません。。 機会があれば、こんな自分でもよく使用してしまう Atom のショートカットや、使い方をまとめた記事を投稿しようかなと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: アプリケーションのスリープを無効にする

すべてのアプリにおいて、開発者が想定している使い方をしてくれるほどユーザーは優しくはありません。 なかにはアプリ使用中にも関わらずいきなりスリープボタンを押す、といった開発側には嫌がらせともとれる想定外の行動をとるユーザーもいます(笑) ユーザーの意思によるスリープを抑止することはできませんが、アプリ側で自動的にスリープしない方法は存在します。 今回は、このアプリのスリープを無効にする方法を説明したいと思います。 目次 アプリのスリープを無効にする まとめ アプリのスリープを無効にする UIApplication クラスのプロパティに idleTimerDisabled という Bool 値があるので、これを true にすればアプリがスリープしなくなります。 以下は AppDelegate の didFinishLaunchingWithOptions 内に記述した場合の例です。 AppDelegate.swift まとめ この設定を行うとアプリがスリープしなくなるので、当然ながら電力の消費量も多くなってしまうことが考えられます。 やみくもにスリープしなくなるアプリも問題ですので、自動的にスリープされると都合が悪い処理が行なわれている部分でのみ 設定を切り替えるようにすればいいかと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: WKWebView の userContentController で取得した JSON を使用する

WKWebView は、JavaScript の受け渡しがとても楽に行えるのが大きなメリットです。 単なる文字列としてメッセージ送信を実行すれば、それだけでネイティブ側をコントロールできるのですが、JSON 自体をメッセージで送信し、メッセージハンドラ経由で WKWebView で JSON を受け取ることも可能です。 今回は、メッセージハンドラで JSON を受け取り SwiftyJSON でパースした値を print 出力したいと思います。 目次 準備 JSON を送受信する まとめ 準備 Lead(承) JSON の準備 サーバー側で適当な JSON を用意します。 WKWebView の準備 ViewController に WebKit をインポートし、デリゲートメソッド userContentController を実装しておきます。 SwiftyJSON の準備 そのまま JSON を利用することも可能ですが、今回は JSON へのアクセスを簡単にしてくれる SwiftyJSON をダウンロードし、プロジェクトにインポートしておきます。 これで準備は完了です。 JSON を送受信する 先ほどの JSON をメッセージハンドラで送信、ViewController で受信します。 メッセージ(JSON)の送信 メッセージ(JSON)の受信 userContentController の中で受け取った JSON を SwiftyJSON でデコードし、print 出力します。 結果 まとめ とくに面倒な手順もなく、思いの外かんたんに JSON がネイティブに受け渡せたことと思います。 現在 WKWebView がデファクトスタンダードとなりつつあり、今後は UIWebView から WKWebView への移行は加速していくと思われます。 WKWebView で実現できないことは、セキュリティ上の問題があることが多いはずですので、UIWebView を利用しているアプリがあれば、早めにシフトしておくといいのではないでしょうか。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Xcode: アプリビルド時に dyld`dyld_fatal_error が出た場合の解決方法

アプリのビルド時、dyld`dyld_fatal_error と言うエラーが発生することがあります。 目にする機会は非常に稀ですが、今回はこのエラーが発生した場合の解決方法をメモしておきます。 目次 dyld`dyld_fatal_error が出た場合の解決方法 まとめ dyld`dyld_fatal_error が出た場合の解決方法 Product -> Clean (shift+command+K) でクリーン実行後、ビルドすれば問題は解決します。 まとめ このエラーの解決方法は Clean コマンド一発で済みますが、頻繁に発生するものではなく、どちらかというと開発者側に責任がない(プログラム上に問題がない)ときに起こるため、発生するとすごく焦ります。 自分の場合、開発も終わりに近づき Certificate 周りの変更を Apple Developer 側で行った際に発生しました。 ビルド時おまじないのように、クリーンしてからビルド、という手順が習慣になっていれば、このエラーに遭遇することはまずありませんが、覚えておいて損はないかと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: アプリ内でユニーク ID (UUID) を生成する

サーバーからユーザーのユニークな ID を取得し、データ処理を行うことはよくあると思います。 一方アプリからユニークな ID を発行し使用したい場合、ID 生成のためのクラスやファンクションを実装することになります。 今回は、Swift であらかじめ用意されている関数を使用し、ユニークな ID を生成する方法をメモしておきます。 目次 ユニークな ID (UUID) を生成する まとめ ユニーク ID (UUID) を生成する 以下のように NSUUID メソッドを使用すれば、たった1行でユニーク ID (UUID) が生成できます。 UUID 生成 結果 まとめ 上記 UUID メソッドでは 16 進数で 32 桁の ID を生成します。 もちろん、このメソッドでは 100% ユニークな値が保証されるわけではありません。 ちなみに、この方法で生成された ID が被ってしまう確率は、 340,282,366,920,938,463,463,374,607,431,768,211,456 分の 1 (340澗2823溝6692穰9384634垓6337京4607兆4317億6821万1456) です。安心して使わせていただきましょう(笑) この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: WebView を縦スワイプに反応しないよう固定する方法(バウンス無効)

標準ブラウザでは縦方向に長いページをスワイプし、最上段、最下段に到達した時にバウンスする仕様になっていますが、この挙動を望まない場面があります。 アプリに WebView を使用し、プルリフレッシュを実装した際にこのバウンスのせいで、ページ内をプルしたつもりが、WebView 全体が動いてしまうことがあります。 今回はこの WebView 全体を縦方向に動かなくする方法を紹介します。 目次 WebView(画面全体)が縦方向のスワイプに反応しないようにする まとめ WebView(画面全体)が縦方向のスワイプに反応しないようにする WebView には scrollView.bounce と言うプロパティがあり、これが縦方向に画面が動く(バウンスする)かどうかを許可する値です。 この値を false にすることで、スワイプによる画面全体のバウンスが無効になります。 Swift まとめ 今回紹介した方法は、冒頭で説明したように WebView でプルリフレッシュが実装されたアプリ 以外に使い道はない気がするので、そういえばこういうのもあったな、といった程度に覚えておけばいいのではないでしょうか。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

siro:chro 無料ゲーム SQN をリリースしました

img_sqn_00

sirochro 初の無料ゲームアプリ SQN をリリースしました。
記事:SQN: iOS 無料ゲームアプリ SQN - Sequential Numbers をリリース
ちょっとした時間に楽しめる完全無料のゲームなっていますので、是非ダウンロードして遊んでみてください。

↓SQN のダウンロードはこちらから