Swift・iOS

Swiftを中心に学んだことを記録に残すブログです。技術に関係ない記事もたまに書いています。

Swift

【Swift】Swift4でJSONのパース(SwiftyJSONを使わない方法)

■はじめに 以前、【Swift】APIからPOSTでデータ取得する(Alamofire/SwiftyJSON) - Swift実践ブログでAlamofireとSwiftyJSONを使いましたが、今回はSwiftyJSONを使わずにパースしてみました。 ■開発環境 ・Xcode9.3.1 ・Swift4.1 ■実装部分 今回はOpenWeather…

【Swift】ジェネリクスとは

■はじめに GitHubに上がっているコードを読んでいたところ、ジェネリクスが使われていたので調べてみました。 ■ジェネリクスとは 「配列型やディクショナリ型(辞書)でも型に左右されずに値を格納したり取り出すことが可能」 「型を気にせずにさまざまな処…

【Swift】Swift4でチャットボットを作る(Repl-AI)

■はじめに AIチャットボット作成サービス「Repl-AI」のAPIを利用して、以下記事で作ったチャットアプリへチャットボットの機能を追加してみました。 【Swift】Swift4でチャットアプリを作る(JSQMessagesViewController/Firebase) - Swift実践ブログ ※本記…

【Swift】APIからPOSTでデータ取得する(Alamofire/SwiftyJSON)

■はじめに AlamofireとSwiftyJSONを使いGET通信でデータ取得をしたことはあったものの、POST通信ではやったことがなかったので、今回取り組んだ内容を記事に残します。 ■開発環境 ・Xcode9.3.1 ・Swift4.1 ■実装部分 // {}にはクエストURLを記述 let URL = "…

【Swift】「FirebaseCore/FIRApp.h not found」の原因

■はじめに Firebaseを導入しているプロジェクトをxcodebuildコマンドでビルドすると、 「FirebaseCore/FIRApp.h not found」のエラーが出てしまいました。 あまりにくだらないミスだったのですが、 初心者であればやりかねないかも・・・とも思ったので、一…

【Swift】「Could not build Objective-C module 'Firebase'」の対処法

■はじめに Firebaseを導入したプロジェクトをビルドした時に、「Could not build Objective-C module 'Firebase'」のエラーが出てしまいました。エラー対処の方法に関して書きたいと思います。 ■開発環境 ・Xcode9.3.1 ・Swift4.1 ■対処法 以下のフローでキ…

【Swift】「Use of undeclared type 'DatabaseReference'/Use of unresolved identifier 'Database'」の対処法

■はじめに Firebaseを導入した時に出た表題のエラーに関して、状況と対処した内容に関して書きたいと思います。 ■開発環境 ・Xcode9.3.1 ・Swift4.1 ■エラーが出た時の状況 CocoaPodsを使用して、Firebaseをインストール。 その後、以下のようにデータベース…

【Swift】Swift4でチャットアプリを作る(JSQMessagesViewController/Firebase)

■はじめに JSQMessagesViewControllerとFirebaseを使ってリアルタイムチャットを作ってみました。以下参考にさせていただいた記事はSwift2で書かれてるので、Swift4でも動くように直したコードを本記事に残します。ライブラリの導入等、実装以外の部分は以下…

【Swift】Swift4でFirebaseに触ってみる

■はじめに Firebaseに触ってみたくなったので、以下記事を参考にさせていただき試してみました。 Swiftで始めるFirebase入門 - Qiita ■Swift4での書き方 上記記事はとても丁寧な説明なのでスムーズに試すことができるかと思いますが、Swift4だと若干書き方が…

【Swift】ARCと循環参照の概要

■ARC(Automatic Reference Counting)とは インスタンスを生成するたびに、参照カウントを用いてそのインスタンスのためのメモリ領域を自動的に確保、不要になったタイミングでメモリを自動的に解放する方式です。デフォルトは強参照となります。 ■循環参照…

【Swift】クラスメンバーとインスタンスメンバーの使い分け

■はじめに クラスプロパティの説明として、「インスタンスに依存しない値を扱う際に使う」、クラスメソッドの説明として「インスタンスに依存しない処理を扱う際に使う」とありますが、インスタンスメンバーとの使い分けがわかるようなわからないような・・…

【Swift】Computedプロパティって必要なの?(set/get)

■はじめに Swiftの入門書をやっていて、Computedプロパティの定義や書き方は掲載されているものの、具体的にどんな時にどんな目的で使うのか掲載されていませんでした。このままでは自分で開発する時に使えないので調べてみました。 ■Computedプロパティとは…

【Swift】Carthageでのライブラリ導入時エラー(failed with exit code 72/failed with exit code 65)

表題のエラーに関してメモ。 ヘボすぎるエラーなのですが、誰かの役にたてば幸いです・・・。 ■前提 ・Carthageの導入 Carthage自体の導入に関しては以下記事を参考にしました。 【Swift】Carthage導入手順 - Qiita ・ライブラリの導入 導入したライブラリは…

【Swift】Carthageとは(CocoaPodsとどちらを使うべきか)

■はじめに ライブラリ管理にはCocoaPodsを使っているのですが、Carthageとの違いやメリット、どちらを使うべきかといった理解ができていないため、Carthageを中心に調べてみました。 ■Carthageとは 「Carthage builds your dependencies and provides you wi…

【Swift】User Notifications frameworkでローカル通知機能の実装(バックグラウンド/フォアグラウンドでの表示)

■はじめに iOS 10以降で使えるUserNotificationsでローカル通知の実装をしてみました。 とはいえ、表題の内容には既にネット上に詳しい説明をしている記事が多くあります。 実装してみたい方は、まずは本記事の末に記載した参考記事をご覧ください。参考記事…

【Swift】「Showing Recent Issues Command failed due to signal: Abort trap: 6」の原因

「Showing Recent Issues Command failed due to signal: Abort trap: 6」のエラーがなかなか解決できず苦戦しました。事例を検索しても明確な原因は見つけられなかったのですが、解決できたので事例として記事に残しておきます。 ■エラーが出た時の状況 Rea…

【Swift】Realmを触ってみる(レコードの書き込み/取得)

興味本位でRealmを触ってみたくなり、以下記事を参考に試してみました。 [iOS] Realmを使ってみた 〜環境構築からCRUDまで〜 | Developers.IO プログラミングを始めたばかりの方の中には、もしかすると上記記事の内容は理解できるものの、具体的にどのよう…

【Swift】エクステンション(extension)を使うメリット

■エクステンション(extension)とは 「拡張機能は、既存のクラス、構造体、列挙型、またはプロトコルタイプに新しい機能を追加します。」 引用:The Swift Programming Language (Swift 4.1): Extensions ■メリット 同じプロパティやメソッドを繰り返し記述…

【Swift】escaping属性(@escaping)とは

クロージャを使用する時に出てくるescaping属性に関するメモ。 ■escaping属性とは 以下、Appleの「Guides and Sample Code」のサイトの引用です。 ブラウザの翻訳機能だけではいまいち理解しにくいです。。 「A closure is said to escape a function when t…

【Swift】指定イニシャライザとは / super.init()の前でプロパティを初期化する

「super.init()の前でプロパティを初期化するのはなぜ?」 ・・・指定イニシャライザに関して理解できていない証拠なのでまとめてみました。 ■指定イニシャライザ(Designated Initializer)とは 「Designated initializers are the primary initializers fo…

【Swift】Singleton パターンってどういう時に使うの?

実際にアプリを開発する上で便利とされるシングルトンですが、いまいちどのような時に使うのかイメージしにくかったので調べました。 ■そもそもSingleton パターンとは Wikipediaによると、「オブジェクト指向のコンピュータプログラムにおける、デザインパ…

【Swift】Sourcetreeでの.gitignoreの設定

Sourcetreeでの.gitignoreの設定に関してです。 まず、下の画像の「設定」を選択します。 「高度な設定」を選択し、「リポジトリ限定無視リスト」の「編集」を選択します。 ここで.gitignoreの編集。今回はgithub公式のリポジトリ「Swift.gitignore」を使っ…