こちょこちょブログ

プログラミングとか学んだことの備忘録ブログです。

1からiPhone(iOS9対応)アプリをSwiftで作った僕が躓いたこと4つ※開発編

ついにiOSアプリをリリースしました。

会社名義なので具体的には紹介しませんが、

作ったのは簡単に言うとブラウザアプリです。

タイトルで煽っときながら、ぶっちゃけそこまで躓かなかったんですが、

後でまたググるのも面倒なのでまとめておきます。

あと、プロジェクトを作るときは、

最初からリリースする予定の「Organization Name」、「Organization Identifier」にしておいた方が後々面倒なことにならずに済みます。

(難しいかもですが。。)

f:id:kmatz90:20151102003605j:plain

※ちなみにXcode7を使っていて、言語はSwiftで書いています。

構文とかは過去の記事を参考にしてください。

 

1.初心者が通る道、Thread 1:signal SIGABRT...(実行時エラー)

これはObjective-Cもそうだと思うんですが、

Storyboard使用時に、何かしらのUI部品(ボタンとか)から

クラスファイルにドラッグ&ドロップして紐付けるじゃないですか?

紐付けたのにも関わらずそのUI部品を消したり、

生成されたコードを消したりすると、

紐付けしようとしてるのに相手がいないよ」という状態になります。

Xcode上ではエラーにならないので、そのまま実行して初めて気づくパティーンです。

なので、その接続を削除するか、再度紐付けし直すかすれば直ります。

他にも「signal SIGABRT」の要因はあると思いますが、

大体は上記が原因だと思います。

 

2.iOS9から追加されたATS(App Transport Security) 

これは通信する(WebViewとか)アプリを作る場合限定の話です。

ATSとは簡単に言うと「SSL通信のみしか許可しませんよ」ということです。

つまりHTTP通信できません

これはブラウザのようなアプリには致命的です。

しかし「info.plist」というファイルの中身を変更すると、例外的に許可できます。

また、完全にHTTP通信を許すこともできます。

方法はこちらを参考にしました。

 

最近はSSL通信のサイトも増えてきましたが、

まだまだ一般のサイトはHTTPの方が多いですよね。

Yahoo!検索もSSLになりましたし、今後はもっと普及していくんですかね。

 

3.ViewController.swiftはViewごとに作る必要がある

画面遷移させてゴニョゴニョするようなアプリを作る場合、

その画面(View)を制御する必要があります。

つまりコントローラーをViewごとに追加しなくてはいけません。

そうなってくると、

「Viewが多いアプリほどコントローラーが増えて管理が大変なのでは?」

と思ったのですが、他に方法が見つけられませんでした。

追加の仕方はこちらが参考になりました。

 ※追記 ブクマのコメントで、逆に1つのコントローラにまとめるとコントローラが太って良くないとありました。

言われてみると確かにそうですね。

 

4.画面から画面への値の受け渡し、Delegate

3に付随します。

Viewを遷移させるのは割と簡単なんですが、

例えば、View1で入力させた値をView2で確認させたい場合、

値の受け渡しをする必要があります。

これが最初は結構分かりにくいので、初心者の人は躓くかなと思います。

具体的な方法はこちらがかなり分かりやすいです。

 

まとめ

今回はSwiftでの開発のことをメインに書きました。

次回は、アプリを実際にリリースするときに躓いたことを書こうと思います。

リリース版を書きました↓

あと、開発するうえで使った細かい技術などは今回書いてないので、

そういった部分も後々まとめたいと思います。

詳解 Swift

詳解 Swift