読者です 読者をやめる 読者になる 読者になる

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

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

【iOS Swift入門 #298】Swift3.1での変更点「Sequenceプロトコル(Array等)への関数追加」

この記事を読んでわかること Sequenceプロトコル(Array等)への関数追加 prefix(while:) 例: 条件は「100未満の値」 例: 条件は「1文字以上」 drop(while:) 例: 条件は「100未満の値」 例: 条件は「1文字以上」 Swift 入門書籍 仕事でやれるレベルになるため…

【iOS Swift入門 #297】Swift3.1での変更点「Intのイニシャライザが追加」

この記事を読んでわかること Intのイニシャライザが追加 例 Swift 入門書籍 仕事でやれるレベルになるために 平均的プログラマーを超えるために この記事を読んでわかること Swift3.1での変更点 init?(exactly:)の使い方 Intのイニシャライザが追加 Swift3.1…

【iOS Swift入門 #290】文字列・テキストをUILabelに表示するために必要な領域サイズを計算する

はじめに この記事を読んでわかること やりかた ソース 例 サンプルソースのダウンロード 参考情報 Swift はじめに 文字列・テキストの表示に必要な領域サイズを得るときに、 NSStringやNSAttributedStringクラスの boundingRect(with:options:context:)メソ…

【iOS Swift入門 #289】UILabelオブジェクトを複製・コピーする

はじめに やりかた ソース 例 例:コンソールで確認 例:画面で確認 サンプルソースのダウンロード 参考情報 Swift はじめに UILabelオブジェクトを複製したいということがあるかも、 ということでやりかたを調べた。 やりかた NSKeyedArchiverクラスでNSData…

【iOS Swift入門 #287】関数・メソッドのパラメータにvarを指定できないように変更 [Swift3.0]

関数・メソッドのパラメータにvarを指定できないように変更 Swift3.0以前にこれができることを知らなかった。 変更された理由はvarとinoutが混同してしまうことがあるから。 変更前(Swift3.0からはエラーになる) import UIKit // 関数・メソッド内で変更でき…

【iOS Swift入門 #284】引数のデータ型が異なるが、名前が同じメソッドを実行した場合に、どのメソッドが実行されるか?

この記事を読んでわかること 引数のデータ型が異なるが、名前が同じメソッドを実行した場合に、どのメソッドが実行されるか? 確認 AnimalクラスとDogクラスがある。 DogクラスはAnimalクラスを継承している。 import Foundation class Animal{ let name:Str…

【iOS Swift入門 #283】引数の数が可変の関数・メソッドを定義する

この記事を読んでわかること 引数の数が可変の関数・メソッドの定義 引数の数が可変の関数・メソッドの定義 引数のデータ型を「<データ型>...」としてあげればいい。 例えば、Int...やString...。 func participants(of names: String...){ names.forEach{ p…

【iOS Swift入門 #277】「失敗する可能性があるイニシャライザ」を定義する

この記事を読んでわかること 失敗する可能性があるイニシャライザ 初期化に失敗させる場合 イニシャライザの中で各種プロパティの初期化に失敗した場合 失敗する可能性があるイニシャライザの定義 initではなく、init?でイニシャライザを定義する。 注意すべ…

【iOS Swift入門 #270】集合(Set)の使い方。コレクションは配列(Array)、辞書(Dictionary)だけじゃない。

この記事を読んでわかること 集合(Set)の使い方 Setは同じ型のデータを格納できるコレクションです。 その他のコレクションであるArrayやDictionaryとの違いは以下の点にあります。 要素に重複がない 要素の順序が決まっていない 作成 let setA: Set<Int> let set</int>…

【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入門 #226】自作のクラスをSequenceTypeを適用して、for in 構文に対応させる

for in構文は配列の繰り返し処理に使う。 このfor in構文を自作のクラスでも使えるようにするには?SequenceTypeプロトコルを自作のクラスに適用する必要がある。■SequenceTypeプロトコルの定義 protocol SequenceType : _Sequence_Type { typealias Generat…

【iOS Swift入門 #225】_(アンダースコア)の使い方

Swiftでは使わない項目は_(アンダースコア)で省略できる。どういうことかというと?Playgroundで試す。 import UIKit let fans = [("Aさん", "ガッキー"), ("Bさん", "ささきき"), ("Cさん", "さとみ")] // 使わない項目は_(アンダースコア)で省略できる① le…

【iOS Swift入門 #224】preconditionの使い方

preconditionはある条件を満たさないときにアプリを強制終了させるのに使う。■Assertとpreconditionの違い assertはdebug buildでだけ有効 preconditionはdevelopment buildとrelease buildで有効■preconditionの定義 ・conditionがfalseのときに失敗させる …

【iOS Swift入門 #223】assertを使う

アプリを複数人で作っている場合や、 一人で作っていても後々別の人が保守していくようになった場合に有効。この部分のソースはこういう値以外は無効だよと、 ソースを読んでいる人に伝えられる。assert関数はいくつか用意されているが、ひとつ試す。assert(…

【iOS Swift入門 #222】クラスにsubscriptを定義する

Dictionaryの要素にアクセスするときに 変数["キー"] とする。Swiftではsubscript文を使って、 独自クラスに実装できる。 しかも、キーは文字列でなくても、数値やクラスなどを使って定義できる。■Modelクラスが持つ配列にアクセスできるようにする・下記の…

【iOS Swift入門 #221】同じ値を複数もつ配列を作成する

同じ値を複数もつ配列を作成する場合、 Arrayのイニシャライザーを使うのが便利。同じ値を複数もつ配列を作成する場合とは?例えば、0を10個もつ配列を作成する。 下記のように作成できる。 var numbers = [0,0,0,0,0,0,0,0,0,0] Arrayのイニシャライザーを…