Swift,Objective-Cプログラミング ~ iOS ~

Objective-C,Swift,Apple Watchなどのプログラミング

【iOS Swift入門 #264】Unknown class **** in Interface Builder file でエラー。****クラスがプロジェクトに存在するのにエラーになる!?

アプリをビルドしてたら、 Unknown class **** in Interface Builder file というエラーが出てしまう。 ****の名前のクラスはプロジェクト内に存在するのにね!!! いろいろ試した結果解決した。 解決方法は? imobile_pid = "33302"; imobile_asid = "5687…

【iOS Swift入門 #263】Swift2.0でguard文が使える場合が2つわかった。最もメリットを感じるのはoptional型のチェックだよね。

Swift2.0から導入されたguard文のメリットは2つ。 imobile_pid = "33302"; imobile_asid = "568775"; imobile_width = 300; imobile_height = 72; imobile_option = { type: "infeed_inline", }; imobile_infeed = { num: "1", }; 1.処理を実行する前の事前…

【iOS Swift入門 #262】Swift2.0で繰返しの構文do whileがrepeat whileに変わったので試してみる

Swift2.0で繰返しの構文do whileが変わりました。 「do」を「repeat」に変えるだけです。 imobile_pid = "33302"; imobile_asid = "568775"; imobile_width = 300; imobile_height = 72; imobile_option = { type: "infeed_inline", }; imobile_infeed = { n…

【iOS Swift入門 #261】フォトライブラリから画像・写真を選択して表示する。サンプルをダウンロードして確認!

フォトライブラリから画像・写真を取得する。 imobile_pid = "33302"; imobile_asid = "568775"; imobile_width = 300; imobile_height = 72; imobile_option = { type: "infeed_inline", }; imobile_infeed = { num: "1", }; 1. UIImagePickerControllerDel…

【iOS Swift入門 #260】テキストフィールドのカーソルを非表示にしたい。ラベルのように見せつつ、テキストフィールドのメソッドを使いたいからだ

テキストフィールド(TextField)のカーソル(Cursor)を非表示にしたいでしょう? 「2015/10/02」という部分があります。 これはUITextFieldのサブクラスで作っています。 タップすると、画面の下から日付ピッカーを表示し、 ユーザーに日付を選択してもらうよ…

【iOS Swift入門 #259】Xcode7新機能 Storyboard Referenceの使い方を語る。Storyboardを使ってコンフリクトに苦しんでいた人は必見。

Storyboardは敬遠されがちだった Storyboardを使うのを敬遠している人は結構いる。 なぜなら? 複数の人が同時に編集したためにコンフリクト発生 コンフリクトを防ぐためにStoryboardを分割すると、 コードからStoryboardファイルを指定して、初期化しないと…

【iOS HealthKit入門 #007】保存したHealthKitデータを削除する

はじめに HealthKitデータを削除する場合、 他のアプリが作成したデータを削除することはできません。 気をつけてください。 imobile_pid = "33302"; imobile_asid = "568775"; imobile_width = 300; imobile_height = 72; imobile_option = { type: "infeed…

【iOS HealthKit入門 #006】HealthKitからをデータ取得する

はじめに 下記記事の続きです。 swift.swift-studying.com 前回記事ではHealthKitで体温データを保存するところまでやりました。 今回は保存したデータを取得する方法を調べてみました。 imobile_pid = "33302"; imobile_asid = "568775"; imobile_width = 3…

【iOS HealthKit入門 #005】HealthKitデータ保存領域にデータを保存する

swift.swift-studying.com HealthKitデータ保存領域へのアクセス許可を取得できたら、 次はデータの保存をやってみよう! imobile_pid = "33302"; imobile_asid = "568775"; imobile_width = 300; imobile_height = 72; imobile_option = { type: "infeed_in…

【iOS HealthKit入門 #004】HealthKitデータ保存領域へのアクセス許可要求

前回記事でHealthKitに保存するデータの作成方法を書いた。 swift.swift-studying.com データが作成できたら次は保存に進みたいところであるが、 アプリがHealthKitのデータ保存領域にアクセスするには、 ユーザーにアクセス許可してもらう必要があります。 …

【iOS HealthKit入門 #000】HealthKitアプリ開発をはじめよう!

swift.swift-studying.com swift.swift-studying.com swift.swift-studying.com swift.swift-studying.com swift.swift-studying.com swift.swift-studying.com swift.swift-studying.com HealthKit参考書籍 iOS 8 Swift Programming Cookbook: Solutions & …

【iOS HealthKit入門 #003】HealthKitに保存するデータの作成 ※サンプルあり

HealthKit参考書籍 iOS 8 Swift Programming Cookbook: Solutions & Examples for iOS Apps データを作成するときに関わるクラス 下記のクラス、またはそのサブクラスがデータ作成に関わります。 HKUnitクラス HKQuantityクラス HKObjectTypeクラス HKObject…

【iOS HealthKit入門 #002】HealthStoreからデータを取得

下記記事の続きです。 swift.swift-studying.com HealthKitを使ってHealthStoreからデータ取得します。 細かいことは後々に勉強することとして、データ取得を試します。 データ取れたーっといううれしさで勉強のモチベーションがあがります。 imobile_pid = …

【iOS HealthKit入門 #001】まずはプロジェクト作成とデータ保存

HealthKitの導入 プロジェクトにHealthKitを導入する方法です。 まずは新規プロジェクトを作成しておきましょう。 imobile_pid = "33302"; imobile_asid = "568775"; imobile_width = 300; imobile_height = 72; imobile_option = { type: "infeed_inline", …

【iOS Swift入門 #256】Carthageを使った外部ライブラリ導入方法

Carthageの導入方法 iOSアプリ開発で、ライブラリ管理はCocoaPodsではなく、 Cartageを使う人が増えてきているようだ。 imobile_pid = "33302"; imobile_asid = "568775"; imobile_width = 300; imobile_height = 72; imobile_option = { type: "infeed_inli…

【iOS Swift入門 #255】独自クラスでログ出力(description)を実装する

はじめに NSObjectを継承しているクラスであれば、 初期化したオブジェクトでdescription関数を 実行すると何らかのログが出力される。 print(CustomClass()) NSObjectを継承しないカスタムクラスを作成した場合、 CustomStringConvertibleプロトコルを採用…

【iOS Swift入門 #254】RealmSwiftの導入

Realmとは データベースの一種。 iOSだけでなく、Android版もある。 速くて、構文が書きやすく、テーブル定義も簡単。 RealmSwiftはそのRealmをSwiftで使うためのライブラリ。 RealmSwiftの導入方法 CocoaPodsを使っている場合 Podfile内に下記を追記 use_fr…

【iOS Swift入門 #253】join関数(デバッグやCSV作成に使えるかも)

Swiftではたくさんの関数が用意されている。 その中でデバッグで配列の中身を出力して確認したいときに便利なのがjoin関数。 指定した区切り文字で区切って、配列の中身を出力する。 定義は簡略化して書くと join("区切り文字”, 配列) -> String となる。 使…

【iOS Swift入門 #252】IBInspectableでenumの定義を使いたい

imobile_pid = "33302"; imobile_asid = "357579"; imobile_width = 728; imobile_height = 90; はじめに XCode6.xから使えるようになったIBInspetableを使うと、 作成したサブクラスのプロパティの値をStoryboard(XIB)で設定できるようになるので便利です。…

【iOS Swift入門 #251】加速度センサーを使うサンプル

加速度センサーで値を取得するのはそんなに難しくなかった。 加速度センサーで値を取得するためにやること CoreMotionライブラリを追加 CMMotionManagerプロパティの追加 CMMotionManagerプロパティに加速度センサーを使う設定する 加速度センサーを開始する…

【iOS Swift入門 #249】Errors thrown from here are handled ・・・とエラーになる場合(エラーハンドリングにて)

Swift2.0で使えるようになったエラーハンドリングを試していた。 インターネット上の情報を参考に勉強していたところ、 Errors thrown from here are handled because the enclosing catch is not exhaustive とエラーになってしまう。 調べたところ、エラー…

【iOS Swift入門 #248】Swift2.0からのエラーハンドリング(Error Handling)のサンプル

Swift2.0でエラーハンドリングができるようになったので、 少し試しておく。 エラーの定義 エラーはErrorTypeを継承したenumにケースとして追加する。 enum CustomError: ErrorType{ case UnexpectedString } エラーを投げる処理の作成 引数に数字をインプッ…

【iOS Swift入門 #247】テキストフィールドにコピー、ペーストのメニューを表示しないサンプル

はじめに テキストフィールドをロングタップした時に コピー、ペーストのメニューを表示しない方法。 テキストフィールドをタップした時表示されるコピーやペーストはUIMenuControllerといいます。 これを非表示にしたい場合、UITextFieldを継承したクラスを…

【iOS Swift入門 #246】Xcode7から使えるUITest(XCTest)の使い方サンプル

はじめに Xcode7からXCTestにUIテストの機能が追加されたので試してみる。 テスト用に作成したアプリがこちら。 どんなUIテストする? UITestで↓の操作を指示する。 テキストフィールドに数字を入力 →計算ボタンを押す →ラベルに結果文字列が表示 その結果、…

【iOS Swift入門 #244】ファイル名の文字列指定の手間を省くライブラリ(R.Swift)

UIImageで画像を読み込むとき、XIBファイルを読み込むとき、 Segue(セグエ)のIdentifierを指定するとき、 ハードコーディングで文字列指定していませんか? 例えば、↓のような感じ。 ・XIB読み込み let nib = UINib(nibName: "OnePartsView", bundle: nil).i…

【iOS Swift入門 #243】ios9キーボード上のassistantを非表示にする方法

ios9キーボード上のassistantと言っているのは↓iOS9のiPadでキーボードを表示すると表示されます。 表示するとなんらかの制御を追加しないといけないので、非表示にしたい。調べた結果、下記の方法で実現できた。UITextFieldのinputAssistantItemプロパティ…

【iOS Swift ゲーム開発(SpriteKit)入門 #7】一定間隔で物が落ちてくる処理をする

定期的に物体が落ちてくるようにするには、 NSTimerを使って、一定間隔で特定の処理をさせる。ここでは円形の物体が一定間隔で上から落ちてくるようにする。■実装 こちらからスタート用サンプルプロジェクトをダウンロード。 SampleBallFall_Start.zip - Goo…

【iOS Swift ゲーム開発(SpriteKit)入門 #6】物体同士が衝突した時になにかの処理をする

物体同士の衝突を検知するにはSKPhysicsContactDelegateを使う。SKLabelNodeというUIKitでいうところのUILabelを使って、物体同士の衝突回数を画面に表示する。■実装 こちらからスタート用サンプルプロジェクトをダウンロード。 SampleBallFall_Start.zip - …

【iOS Swift ゲーム開発(SpriteKit)入門 #5】落下していくゲーム中キャラや物体などを画面下で止める

落下していくゲーム中キャラや物体などを画面下で止める。画面の一番下に見えない物体を配置する。 そうすると、落下していくゲーム中キャラや物体と 見えない物体がぶつかり、止まるのだ。見えない物体はSKShapeNodeクラスを使って作成する。 今まで物体は…

【iOS Swift ゲーム開発(SpriteKit)入門 #4】物理エンジンでSprite(ゲーム中キャラや物体など)を落下させる

物理エンジンでSprite(ゲーム中キャラや物体など)を落下させるには?2つのことをやる。 1. シーンに物理エンジンの設定をする 2. ゲームキャラや物体が物理エンジンの影響をうけるように設定する■実装 こちらからサンプルプロジェクトをダウンロード。 Sampl…

【iOS Swift ゲーム開発(SpriteKit)入門 #3】Sprite(ゲーム中キャラや物体など)の追加

ゲーム中キャラや物体などはSpriteと呼ばれる。 この作り方を書く。■準備 下記のサンプルプロジェクトをダウンロード SampleBallFall_Start.zip - Google ドライブ このサンプルプロジェクトに対して、これから実装していく。このプロジェクトを実行すると下…

【iOS Swift入門 #242】一定間隔で処理をするNSTimer(ちょー簡単な時計サンプル)

一定間隔で同じ処理をしたいとき、NSTimerを使う。ここではNSTimerを使って、簡単な時計を作成する。 (単に現在日時をラベルで表示するだけ)■実装 Single View Applicationで新規プロジェクト作成し、 ViewController.swiftを下記のように編集する。 impor…

【iOS Swift ゲーム開発(SpriteKit)入門 #2】シーン作成、背景表示

■背景だけのゲームというかシーンを作成 ・SKView ・SKScene ・SKNodeのサブクラス達(SKSpriteNode)SKNodeはゲームのキャラクタや背景、得点表示や残り時間表示などである。 これらを使って、ゲームのシーンを表すSKSceneを作成する。(タイトルシーン、ゲー…

【iOS Swift入門 #241】Storyboardを使わないでアプリ作成する(1 新規プロジェクト 〜 Storyboard削除)

最近からiOSアプリ開発の勉強を始める人は、 Storyboardを使ってアプリ開発することから始めてる。なぜなら、入門書籍の多くがStoryboardを使って、 アプリ開発することを説明しているからだ。自分もStoryboardを使ったアプリ開発を勉強することから始めた。…

【iOS Swift入門 #240】セマフォ(semaphore)を使って排他制御するサンプル

排他制御したいとき、GCDで関数が用意されている関数を使う。下記3つである。 ①dispatch_semaphore_create ②dispatch_semaphore_wait ③dispatch_semaphore_signal使ってみる。■例 ①非同期で画像をダウンロードする ②ループのindex * 共有変数numを共有変数nu…

【iOS Swift入門 #101】Storyboardを使わずにCollectionViewを作成する。AutoLayoutも使う。

■Storyboardを使わずにCollectionViewを作成する。 Storyboardを使わずにCollectionViewを作成します。 まずはAutoLayoutを使わずに作成。1.新規プロジェクト作成 ①Xcodeを起動 ②File→New→Project ③Single View Applicationを選択 ④Product Nameなど必要な…

【iOS Swift入門 #239】guard文 ~Xcode7から使える

Swiftを使っていて、Optional型を使っていると、 面倒だと思っていたことがある。①if let文の中にif let文を書いたりすることがある ②if let文の外ではunwrapした定数が無効このせいでif let文の中が結構長くなって、可読性がおちていた。①はSwift1.2で、複…

【iOS Swift入門 #238】protocol extension(プロトコル拡張) ~Xcode7から使える

Xcode7から使えるSwift2.0ではクラスや構造体、 列挙型だけでなく、プロトコルも拡張できるようになった。さわりを勉強したので、残しておく。2つのプロトコルを用意した。 protocol Programmer{ var name: String{get} // 名前 var isUseMac: Bool{get} // …

【iOS Swift入門 #237】クラスやメソッドの定義を参照するショートカット(Xcodeの使い方)

クラス名やメソッドにカーソルをあてて commandキーを押しながらクリック・タップ でそのクラスやメソッドの定義に飛ぶことができる。恥ずかしながら、2年くらいiOSアプリ開発していて知らなかった。。。 プログラミングを楽にするにはXcodeの使い方も覚えた…

【iOS Swift入門 #236】URLエンコードするサンプル

URLエンコードする。Stringクラスで用意されている stringByAddingPercentEncodingWithAllowedCharactersメソッド を使う。 ■実装 新規プロジェクトを作成し、 ViewController.swiftのソースを下記のとおりに修正。 import UIKit class ViewController: UIVi…

【iOS Swift入門 #235】プロジェクト内のファイルにアクセス(テキストファイルとか)するサンプル

プロジェクト内に画像ファイルを追加して、 UIImageViewでアクセスするというにはよくやる。csvやplistなど画像以外のファイルへのアクセスは たまにしか使わないので忘れるのでメモ。NSBundleクラスのpathForResourceメソッドを使って、パスを取得するのだ…

【iOS Swift入門 #234】GIFアニメーションを再生するサンプル(FLAnimatedImage)

GIFアニメーションを再生するには?Flipboardが公開しているFLAnimatedImageを使うと簡単。Flipboard/FLAnimatedImagegithub.com 使い方は下記の通り。 ①FLAnimatedImageのイニシャライザにGIFアニメーションデータを渡し、初期化。 ②作成したFLAnimatedImag…

【iOS Swift入門 #233】表裏(両面)をもつViewを作る

表裏(両面)をもつViewを作る。下記動画のようなサンプルを作成する。 表面には「表」と表示されたラベルがあり、 裏面には「裏」と表示されたラベルがあります。わかりやすくなるように透過を加えて、 逆面が見えるようにしている。画面をタップすると、表裏…

【iOS Swift入門 #232】関数型プログラミングとジェネリクスで配列内の重複排除

Swiftの配列関数では、mapやfilter, reduceなど、 配列を操作する関数が用意されている。配列の重複を排除する関数は用意されていないので、作成する。 func distinct<T: Equatable>(source: [T]) -> [T] { var unique = [T]() for item in source { if !contains(unique, </t:>…

【iOS Swift入門 #231】Google Maps SDKの地図タイプの変更、屋内地図の表示・非表示

Google Maps SDKの地図タイプの変更、屋内地図の表示・非表示を試す!GoogleMaps SDKのインストール方法はこちらを参照。【iOS Swift入門 #229】Google Maps SDKセットアップガイド・使い方 - Swift,Objective-Cプログラミング ~ iOS ~swift.swift-studying.…

【iOS Swift入門 #229】Google Maps SDKセットアップガイド・使い方

1.Google Maps SDKインストール CocoaPodsを使う。pod初期化 ターミナルでプロジェクトファイルのあるフォルダに移動し、下記コマンドを実行pod init②フォルダに作成されたPodfileをエディタで開く ③ファイルを下記のように編集する(#追記がある行を追記) # …

【iOS Swift入門 #230】[!] Unable to find a specification for `GoogleMaps`でインストールできない

GoogleMapsのSDKをインストールしようとした。 CocoaPodsを使ってインストールする手順になっているのだが、 pod install すると、[!] Unable to find a specification for `GoogleMaps`と表示され、インストールできない。 GoogleMaps以外はCocoaPodsでイン…

【iOS Swift入門 #228】位置情報アクセス許可変更のためにアプリから設定画面を表示するサンプル

■はじめに 設定画面からアプリの位置情報オン・オフする場所が 結構深い位置にあるため、ユーザーが一度位置情報アクセス許可を オフにした場合、その後オンにしてもらうのはハードルが高い。iOS8ではアプリから、位置情報のアクセス許可オン・オフにする場…

【iOS Swift ゲーム開発(SpriteKit)入門 #1】はじめに(プロジェクトを作成)

SpriteKitでのゲーム開発を始めていく。■プロジェクト作成 ①Xcodeを起動し、File → New → Projectを選ぶ。②「Game」を選択し、「Next」を押す ③Product Nameなどの情報を入力し、「Next」を押す。 Languageは「Swift」、Game Technologyは「SpriteKit」、 De…

【iOS Swift入門 #227】CGGeometryクラスで用意されている関数はViewのサイズや位置取得が簡単にできて便利

Viewのサイズや位置を取得するときには CGGeometryクラスで用意されている関数を使うと簡単に取得できる。 また、関数名を見ると、どの値を取得しようとしているのかわかりやすいのがいい。例えばどのような関数があるか? Viewの高さを取得:CGRectGetHeigh…